UNaB
Materia “Políticas Públicas y Machine Learning”
Diplomatura en Análisis de Datos para el Desarrollo de Políticas Públicas
Universidad Nacional Guillermo Brown

Docente:
Marianela Sarabia

Presentación

Las brecha salarial por género son un tema de preocupación persistente en el ámbito laboral y han sido objeto de estudio y debate a lo largo del tiempo. Esta disparidad afecta a diversos sectores, tanto en el ámbito público como en el privado. Es importante destacar que no se limitan a un único sector y tienen un alcance más amplio en la fuerza laboral.

En este contexto, es también esencial comprender que otras brechas salariales pueden existir, como la diferencia salarial entre la Ciudad Autónoma de Buenos Aires (CABA) y la Provincia de Buenos Aires (PBA). Explorar la dispersión geográfica en los salarios podría proveer nueva información a los estudios de brecha salarial de género.

Para abordar estas cuestiones, se utilizarán datos relevantes que incluyen información sobre los trabajadores formales en el Área Metropolitana de Buenos Aires (AMBA) registrados en el Sistema Integrado Previsional Argentino (SIPA), obtenidos del Centro de Estudios para la Producción (CEP-XXI), dependiente del Ministerio de Desarrollo Productivo de la Nación. Estos datos, actualizados hasta octubre de 2021, se utilizarán para identificar y comprender las brechas salariales por género y ubicación geográfica, incluyendo la diferencia salarial entre CABA y PBA. Además, se buscará formular políticas locales que aborden estas disparidades y promuevan la equidad salarial en el ámbito laboral.

Documentación

Análisis Exploratorio de Datos

0. Acciones Preliminares

Originalmente, se planificó realizar el desarrollo del código en una notebook de Google Colab, configurada para operar con con entorno de ejecución R, para aprovechar las capacidades de configuración del entorno con procesamiento GPU y TPU, ventajoso para tareas de Machine Learning. A medida que se fue avanzando, se encontraron distintas complicaciones para la visualización y manejo de datos, y diferencias para utilizar el mismo código R que en documentos .Rmd. La versión final se realizó en este formato, pero la notebook con los avances está disponible: * Notebook Colab: https://colab.research.google.com/drive/1t3ZnWpRxjZZwSbjvvl7-EwBPdwLk7H_k?ouid=114221880555807114010&usp=drive_link * Documentación sobre uso de GPU y TPU: https://serverguy.com/comparison/cpu-vs-gpu-vs-tpu/ * Documentación sobre uso de GPU y TPU: https://saturncloud.io/blog/how-to-activate-gpu-computing-in-google-colab/ * Documentación sobre uso de R en Colab: https://bookdown.org/yshang/book/ * Documentación sobre uso de R en Colab: https://stackoverflow.com/questions/54595285/how-to-use-r-with-google-colaboratory * Documentación sobre uso de R en Colab: https://colab.research.google.com/github/IRkernel/IRkernel/blob/master/example-notebooks/Display.ipynb

Alta de variables de entorno

# Operar en Colab
COLAB <- FALSE
# Habilitar Análisis Geoespacial (sf)
SIG <- TRUE
# Habilitar Clasificación y Regresión (caret)
ML <- FALSE
# Warnings de Librerías
WARN_ACT <- FALSE

if (COLAB) {
  PATH <- "/content/datos/"
} else {
  PATH <- "datos/"
}

actividades_csv <- "actividades.csv"
df_a_letra_csv <- "Empleo-AMBA-a-letra.csv"
df_sin_desagregar_csv <- "Empleo-AMBA-sin-desagregar.csv"
df_csv <- "Empleo-AMBA.csv"
jurisdicciones_csv <- "jurisdicciones.csv"
shapes_shp <- "Shape AMBA.shp"

Obtención de datos desde repositorio git

# Clonación de datos del repositorio Git
if (!dir.exists(PATH) || length(list.files(PATH)) == 0) {
  system("git clone --single-branch --branch datos https://github.com/DiploDatosUNAB/PPyML-TPF-Blasco-Orainde-Diaz.git datos")
}

Obtención de tabla Empleo-AMBA desde google drive

  # Agregado del archivo Empleo-AMBA.csv  a la notebook, que por tamaño no puede ser alojado en github
if (!file.exists(paste0(PATH,df_csv))) {
  if (!requireNamespace("googledrive", quietly = TRUE)) {
    install.packages("googledrive")
    }
  library(googledrive)
  # URL del archivo compartido en Google Drive
  drive_url <- "https://drive.google.com/file/d/1oIgB5CCFFGFjF0PaP1GykQyw0Dfyrd-Y/view?usp=sharing"
  drive_id <- sub(".*/d/([^/]+)/.*", "\\1", drive_url)
  drive_path <- sprintf("https://drive.google.com/uc?export=download&id=%s", drive_id)
  download.file(drive_path, paste0(PATH,df_csv), mode = "wb")
}

Instalación condicional de librerías

# instalación condicional de librerías (solo instala si faltan)
# https://stackoverflow.com/questions/66869137/installing-r-packages-in-colab
# https://stackoverflow.com/questions/63594521/install-a-r-package-permanently-in-google-colab
instalar <- function(libreria) {
  if (!requireNamespace(libreria, quietly = TRUE)) {
    install.packages(libreria)
  }
}
instalar("gt")
instalar("gtExtras")
instalar("Hmisc")
instalar("purrr")
instalar("lattice")
instalar("ggplot2")
instalar("readr")
instalar("cluster")
instalar("dplyr")
instalar("stats")
instalar("stringr")
instalar("corrplot")
# demora 30-45 segundos
instalar("psych")
# demora demora 3-8 segundos
instalar("skimr")
# demora 5-7 minutos
if (ML) {
  instalar("caret")
}
# demora 7-12 minutos
if (SIG) {
  instalar("sf")
}

*Carga de librerías**

# Función de carga condicional de librerías (solo carga si están instaladas)
cargar <- function(libreria, warns = WARN_ACT) {
  if (requireNamespace(libreria, quietly = TRUE)) {
    if(warns) {
      library(libreria, character.only = TRUE)
    } else{
      suppressMessages(library(libreria, character.only = TRUE))
    }
    
  }
}

# carga de librerías a utilizar
cargar("lattice")      # graficación estadistica
cargar("ggplot2")      # graficación
cargar("readr")        # lectura de datos
cargar("cluster")      # clustering
cargar("dplyr")        # manipulación de df
cargar("skimr")        # estadísticas
cargar("stats")        # estadísticas
# cargar("kableExtra") # tablas
cargar("psych")        # estadísticas
cargar("purrr")        # manejo de listas
# cargar("IRdisplay") # display de notebook
cargar("tidyverse")   # conjunto de paquetes tidy
cargar("stringr")     # cadenas de caracteres
cargar("corrplot")    # grafico de correlación
cargar("Hmisc")       # correlaciones
cargar("gt")          # tablas
cargar("gtExtras")    # tablas
cargar("caret")       # entrenamiento
cargar("sf")          # datos geoespaciales

1. Tablas

1.1 Empleo AMBA

1.1.1 Tabla principal

Esta tabla contiene información referente a la distribución de los trabajadores en relación de dependencia registrados en el Área Metropolitana de Buenos Aires (AMBA) desagregados por sector de actividad a 2 dígitos.

# Empleo AMBA

df <- read.csv(paste0(PATH, df_csv), sep = ",", encoding = "UTF-8")
sample_n(df, 5) |> 
  gt() |> 
  tab_header(
    title = "Empleo AMBA*",
    subtitle = "* muestra"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Empleo AMBA*
* muestra
LINK provincia_id departamento_id clae2 letra Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Remuneracion_mediana Remuneracion_mediana_Hombres Remuneracion_mediana_Mujeres Poblacion_radio Viviendas_radio
064275404 6 6427 80 N 3 3 NA 51035.30 51035.30 NA 66764.00 66764.00 NA 1202 305
066380402 6 6638 1 A 1 1 NA 78813.31 78813.31 NA 78813.31 78813.31 NA 1640 451
7_13_14 2 2049 69 M 3 NA 3 85628.79 NA 85628.79 40836.38 NA 40836.38 709 256
064412009 6 6441 94 S 2 NA 2 208186.96 NA 208186.96 208186.96 NA 208186.96 539 262
065681609 6 6568 80 N 4 4 NA 70113.06 70113.06 NA 69969.02 69969.02 NA 1257 423

Dimensiones

# dimensiones
cat("El DataFrame tiene", dim(df)[1], "observaciones y", dim(df)[2], "variables.")
## El DataFrame tiene 508989 observaciones y 16 variables.

Diccionario

# diccionario de datos
descripciones <- c(
  "Identificador del radio censal",
  "Indicador de provincia",
  "Indicador de departamento",
  "Indicador de CLAE a dos dígitos de desagregación",
  "Indicador de CLAE a nivel de letra",
  "Cantidad de trabajadores en el radio censal para la desagregación de dos dígitos",
  "Cantidad de trabajadores hombres en el radio censal para la desagregación de dos dígitos",
  "Cantidad de trabajadoras mujeres en el radio censal para la desagregación de dos dígitos",
  "Salario medio de los trabajadores del radio censal para cada nivel de desagregación de actividad",
  "Salario medio de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad",
  "Salario medio de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad",
  "Salario mediano de los trabajadores del radio censal para cada nivel de desagregación de actividad",
  "Salario mediano de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad",
  "Salario mediano de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad",
  "Cantidad de personas que habitan en el radio censal según Censo 2010 (INDEC)",
  "Cantidad de viviendas en el radio censal según Censo 2010 (INDEC)"
)

diccionario <- data.frame(
  Clase = sapply(df, class),
  Descripción = descripciones
)

diccionario <- tibble::rownames_to_column(diccionario, "Variable")

diccionario |>   
  gt(rowname_col = "Variable") |> 
  tab_header(
    title = "Diccionario de Datos",
  ) |>
  tab_options(table.width = "90%") |>
  gt_theme_dot_matrix()
Diccionario de Datos
Clase Descripción
LINK character Identificador del radio censal
provincia_id integer Indicador de provincia
departamento_id integer Indicador de departamento
clae2 integer Indicador de CLAE a dos dígitos de desagregación
letra character Indicador de CLAE a nivel de letra
Cantidad_trabajadores integer Cantidad de trabajadores en el radio censal para la desagregación de dos dígitos
Cantidad_trabajadores_Hombres integer Cantidad de trabajadores hombres en el radio censal para la desagregación de dos dígitos
Cantidad_trabajadores_Mujeres integer Cantidad de trabajadoras mujeres en el radio censal para la desagregación de dos dígitos
Remuneracion_media numeric Salario medio de los trabajadores del radio censal para cada nivel de desagregación de actividad
Remuneracion_media_Hombres numeric Salario medio de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad
Remuneracion_media_Mujeres numeric Salario medio de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad
Remuneracion_mediana numeric Salario mediano de los trabajadores del radio censal para cada nivel de desagregación de actividad
Remuneracion_mediana_Hombres numeric Salario mediano de los trabajadores hombres del radio censal para cada nivel de desagregación de actividad
Remuneracion_mediana_Mujeres numeric Salario mediano de los trabajadoras mujeres del radio censal para cada nivel de desagregación de actividad
Poblacion_radio integer Cantidad de personas que habitan en el radio censal según Censo 2010 (INDEC)
Viviendas_radio integer Cantidad de viviendas en el radio censal según Censo 2010 (INDEC)

1.1.2 Reducción a letra

Carga de la df

# Empleo AMBA a letra
df_a_letra <- read.csv(paste0(PATH, df_a_letra_csv), sep = ",", encoding = "UTF-8")
empleo_tipo <- df_a_letra
sample_n(df_a_letra, 5) |> 
  gt() |> 
  tab_header(
    title = "Empleo AMBA - Redución a Letra*",
    subtitle = "* muestra"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Empleo AMBA - Redución a Letra*
* muestra
LINK provincia_id departamento_id letra Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Remuneracion_mediana Remuneracion_mediana_Hombres Remuneracion_mediana_Mujeres Poblacion_radio Viviendas_radio
064415712 6 6441 H 2 2 NA 136001.09 136001.09 NA 136001.09 136001.09 NA 1055 344
065391002 6 6539 M 2 2 NA 39559.90 39559.90 NA 39559.90 39559.90 NA 1520 381
6_7_3 2 2042 G 24 11 13 105093.76 127264.14 86334.20 75593.91 90000.00 74795.61 954 336
067491105 6 6749 I 6 3 3 39588.77 50965.92 28211.61 38309.56 74725.12 28124.16 986 289
064412205 6 6441 C 4 3 1 152187.77 175202.03 83145.00 115976.71 135516.71 83145.00 801 300

Dimensiones

# dimensiones
cat("El DataFrame tiene", dim(df_a_letra)[1], "observaciones y", dim(df_a_letra)[2], "variables.")
## El DataFrame tiene 209544 observaciones y 15 variables.

Variables

# lista de variables
attr(df_a_letra, "names")  |> 
  data.frame() |>
  gt() |> 
  tab_header(
    title = "Empleo AMBA - Reducción a Letra",
    subtitle = "Lista de variables"
  ) |>
  cols_label(
    attr.df_a_letra...names.. = ""
  ) |> 
  tab_options(table.width = "50%") |>
  gt_theme_dot_matrix()
Empleo AMBA - Reducción a Letra
Lista de variables
LINK
provincia_id
departamento_id
letra
Cantidad_trabajadores
Cantidad_trabajadores_Hombres
Cantidad_trabajadores_Mujeres
Remuneracion_media
Remuneracion_media_Hombres
Remuneracion_media_Mujeres
Remuneracion_mediana
Remuneracion_mediana_Hombres
Remuneracion_mediana_Mujeres
Poblacion_radio
Viviendas_radio

Esta tabla posee la misma información que la principal, pero los datos de distintos CLAE dentro de una categoría de actividad fueron unificados, con lo que está ausente la variable CLAE2.

1.1.3 Sin Desagregar

Carga de la df

# Empleo AMBA sin desagregar
df_sin_desagregar <- read.csv(paste0(PATH, df_sin_desagregar_csv), sep = ",", encoding = "UTF-8")
empleo <- df_sin_desagregar
sample_n(df_sin_desagregar, 5) |> 
  gt() |> 
  tab_header(
    title = "Empleo AMBA - Sin Desagregar*",
    subtitle = "* muestra"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Empleo AMBA - Sin Desagregar*
* muestra
LINK provincia_id departamento_id Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Remuneracion_mediana Remuneracion_mediana_Hombres Remuneracion_mediana_Mujeres Poblacion_radio Viviendas_radio
5_2_11 2 2035 339 163 175 130378.65 136395.68 125254.92 96473.41 100344.28 91926.18 841 486
065392203 6 6539 169 92 77 92792.03 93532.71 91907.07 86954.33 83434.93 87231.46 1513 448
13_25_3 2 2091 171 104 67 147392.27 158275.61 130498.72 107770.32 114242.55 101202.56 875 477
068612007 6 6861 137 61 76 166456.35 211263.63 130492.61 117982.20 163827.90 102907.46 790 306
067601201 6 6760 152 91 61 113784.02 124868.48 97248.18 96047.38 101844.44 84644.25 753 216

Dimensiones

# dimensiones
cat("El DataFrame tiene", dim(df_sin_desagregar)[1], "observaciones y", dim(df_sin_desagregar)[2], "variables.")
## El DataFrame tiene 13882 observaciones y 14 variables.

Lista de variables

# lista de variables
attr(df_sin_desagregar, "names")  |> 
  data.frame() |>
  gt() |> 
  tab_header(
    title = "Empleo AMBA - Sin Desagregar",
    subtitle = "Lista de variables"
  ) |>
  cols_label(
    attr.df_sin_desagregar...names.. = ""
  ) |> 
  tab_options(table.width = "50%") |>
  gt_theme_dot_matrix()
Empleo AMBA - Sin Desagregar
Lista de variables
LINK
provincia_id
departamento_id
Cantidad_trabajadores
Cantidad_trabajadores_Hombres
Cantidad_trabajadores_Mujeres
Remuneracion_media
Remuneracion_media_Hombres
Remuneracion_media_Mujeres
Remuneracion_mediana
Remuneracion_mediana_Hombres
Remuneracion_mediana_Mujeres
Poblacion_radio
Viviendas_radio

Esta tabla posee la misma información que la principal, pero sin desagregar por nomenclador de actividades.

1.2 Tablas Auxiliares

1.2.1 Actividades

Tabla con la descripción de las actividades correspondientes a las variables letra y CLAE2 de las anteriores df.

Carga de la df

actividades <- read.csv(paste0(PATH, actividades_csv), sep = ",", encoding = "UTF-8")
# write.csv2(actividades, "datos/Auxiliar/actividades2.csv", row.names = FALSE, fileEncoding = "latin1")

Dimensiones

cat("El DataFrame tiene", dim(actividades)[1], "observaciones y", dim(actividades)[2], "variables.")
## El DataFrame tiene 89 observaciones y 4 variables.

Nomenclador

# Cuadro de actividades x letra y clae
actividades |>
  select(letra,letra_desc,clae2,clae2_desc) |> 
  gt(groupname_col = c("letra","letra_desc")) |> 
 tab_header(
    title = "Actividades CLAE*",
    subtitle = "* Clasificación de Actividades Económicas"
  ) |>
  cols_label(
    clae2 = "CLAE",
    clae2_desc = "Descripción"
  ) |>
  tab_options(table.width = "85%") |>
  opt_stylize(style = 5, color = 'cyan')
Actividades CLAE*
* Clasificación de Actividades Económicas
CLAE Descripción
0 - sin asignar
0 sin asignar
A - AGRICULTURA, GANADERÍA, CAZA, SILVICULTURA Y PESCA
1 Agricultura, ganadería, caza y servicios relacionados
2 Silvicultura y explotación forestal
3 Pesca y acuicultura
B - EXPLOTACION DE MINAS Y CANTERAS
5 Extracción de carbón y lignito
6 Extracción de petróleo crudo y gas natural
7 Extracción de minerales metálicos
8 Extracción de otros minerales
9 Actividades de apoyo al petróleo y la minería
C - INDUSTRIA MANUFACTURERA
10 Elaboración de productos alimenticios
11 Elaboración de bebidas
12 Elaboración de productos de tabaco
13 Elaboración de productos textiles
14 Elaboración de prendas de vestir
15 Elaboración de productos de cuero y calzado
16 Elaboración de productos de madera
17 Elaboración de productos de papel
18 Imprentas y editoriales
19 Fabricación de productos de refinación de petróleo
20 Fabricación de sustancias químicas
21 Elaboracion de productos farmacéuticos
22 Fabricación de productos de caucho y vidrio
23 Fabricación de productos de vidrio y otros minerales no metálicos
24 Fabricación de metales comunes
25 Fabricación de productos elaborados del metal, excepto maquinaria y equipo
26 Fabricación de productos de informática, de electrónica y de óptica
27 Fabricación de equipo eléctrico
28 Fabricación de maquinarias
29 Fabricación de vehículos automotores, remolques y semirremolques
30 Fabricación de otros equipos de transporte
31 Fabricación de muebles
32 Otras industrias manufactureras
33 Reparación e instalación de maquinaria y equipo
D - SUMINISTRO DE ELECTRICIDAD, GAS, VAPOR Y AIRE ACONDICIONADO
35 Suministro de electricidad, gas, vapor y aire acondicionado
E - SUMINISTRO DE AGUA; CLOACAS; GESTIÓN DE RESIDUOS Y RECUPERACIÓN DE MATERIALES Y SANEAMIENTO PUBLICO
36 Captación, tratamiento y distribución de agua
37 Evacuación de aguas residuales
38 Recogida, tratamiento y eliminación de desechos; recuperación de materiales
39 Descontaminación y otros servicios
F - CONSTRUCCIÓN
41 Construcción de edificios y partes
42 Obras de ingeniería civil
43 Actividades especializadas de construcción
G - COMERCIO AL POR MAYOR Y AL POR MENOR; REPARACIÓN DE VEHÍCULOS AUTOMOTORES Y MOTOCICLETAS
45 Comercio al por mayor y al por menor y reparación de vehículos automotores y motos
46 Comercio al por mayor excepto autos y motos
47 Comercio al por menor excepto autos y motos
H - SERVICIO DE TRANSPORTE Y ALMACENAMIENTO
49 Transporte terrestre y por tuberías
50 Transporte acuático
51 Transporte aéreo
52 Almacenamiento y actividades de apoyo al transporte
53 Servicio de correo y mensajería
I - SERVICIOS DE ALOJAMIENTO Y SERVICIOS DE COMIDA
55 Servicios de alojamiento
56 Servicios de expendio de alimentos y bebidas
J - INFORMACIÓN Y COMUNICACIONES
58 Edición
59 Servicios audiovisuales
60 Programación y transmisiones de TV y radio
61 Telecomunicaciones
62 Servicios de programación, consultoría informática y actividades conexas
63 Actividades de procesamiento de información
K - INTERMEDIACIÓN FINANCIERA Y SERVICIOS DE SEGUROS
64 Servicios financieros (excepto seguros y pensiones)
65 Servicios de seguros, reaseguros y pensiones
66 Servicios auxiliares de la actividad financiera y de seguros
L - SERVICIOS INMOBILIARIOS
68 Servicios inmobiliarios
M - SERVICIOS PROFESIONALES, CIENTÍFICOS Y TÉCNICOS
69 Servicios jurídicos y de contabilidad
70 Servicios y asesoramiento de dirección y gestión empresarial
71 Servicios de arquitectura e ingeniería
72 Investigación y desarrollo científico
73 Servicios de publicidad e investigación de mercado
74 Otras actividades profesionales, científicas y técnicas
75 Servicios veterinarios
N - ACTIVIDADES ADMINISTRATIVAS Y SERVICIOS DE APOYO
77 Alquiler y arrendamiento
78 Servicios de obtención y dotación de personal
79 Agencias de viajes, servicios de reservas y actividades conexas
80 Actividades de investigación y seguridad
81 Servicios a edificios y actividades de jardinería
82 Actividades administrativas y de apoyo a oficinas y empresas
O - ADMINISTRACION PUBLICA, DEFENSA Y SEGURIDAD SOCIAL OBLIGATORIA
84 Administración pública, defensa y seguridad social
P - ENSEÑANZA
85 Enseñanza
Q - SALUD HUMANA Y SERVICIOS SOCIALES
86 Servicios de salud humana
87 Actividades de atención en instituciones
88 Actividades de atención sin alojamiento
R - SERVICIOS ARTÍSTICOS, CULTURALES, DEPORTIVOS Y DE ESPARCIMIENTO
90 Servicios artísticos y de espectáculos
91 Servicios de bibliotecas, archivos y museos y servicios culturales n.c.p.
92 Juegos de azar y apuestas
93 Actividades deportivas, recreativas y de entretenimiento
S - SERVICIOS DE ASOCIACIONES Y SERVICIOS PERSONALES
94 Servicios de asociaciones
95 Reparación de computadoras y equipos de uso doméstico
96 Otros servicios personales
T - SERVICIOS DE HOGARES PRIVADOS QUE CONTRATAN SERVICIO DOMESTICO
97 Actividades de empleo doméstico
U - SERVICIOS DE ORGANIZACIONES Y ÓRGANOS EXTRATERRITORIALES
99 Actividades de organismos extraterritoriales
-
NA

1.2.2 Jurisdicciones

Tabla con la descripción de las jurisdicciones correspondientes a las variables provincia_id y departamento_id de las anteriores df.

Carga de la df

jurisdicciones <- read.csv(paste0(PATH, jurisdicciones_csv), sep = ",", encoding = "UTF-8")
sample_n(jurisdicciones,5) |> 
  gt() |> 
  tab_header(
    title = "Jurisdicciones*",
    subtitle = "* muestra"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Jurisdicciones*
* muestra
provincia_id provincia departamento_id departamento
6 PBA 6091 Berazategui
2 CABA 2035 Comuna 5
6 PBA 6329 General Las Heras
2 CABA 2021 Comuna 3
2 CABA 2105 Comuna 15

Dimensiones

cat("El DataFrame tiene", dim(jurisdicciones)[1], "observaciones y", dim(jurisdicciones)[2], "variables.")
## El DataFrame tiene 53 observaciones y 4 variables.
# Listado de departamentos
departamentos <- unique(jurisdicciones$departamento)
departamentos <- c(departamentos, rep("", 3))
fragmentos <- split(departamentos, ceiling(seq_along(departamentos) / 4))
df_elementos <- data.frame(matrix(unlist(fragmentos), ncol = 4, byrow = TRUE))

df_elementos |>
  gt() |>
  tab_header(
    title = "Lista de jurisdicciones",
  ) |>
  cols_label(
    X1 = "",
    X2 = "",
    X3 = "",
    X4 = ""
    ) |> 
  tab_options(table.width = "80%") |>
  opt_stylize(style = 5, color = 'cyan')
Lista de jurisdicciones
Comuna 1 Comuna 2 Comuna 3 Comuna 4
Comuna 5 Comuna 6 Comuna 7 Comuna 8
Comuna 9 Comuna 10 Comuna 11 Comuna 12
Comuna 13 Comuna 14 Comuna 15 Almirante Brown
Avellaneda Berazategui Berisso Brandsen
Campana Cañuelas Ensenada Escobar
Esteban Echeverría Ezeiza Florencio Varela General Las Heras
General Rodríguez General San Martín Hurlingham Ituzaingó
José C. Paz La Matanza Lanús La Plata
Lomas de Zamora Luján Malvinas Argentinas Marcos Paz
Merlo Moreno Morón Pilar
Presidente Perón Quilmes San Fernando San Isidro
San Miguel San Vicente Tigre Tres de Febrero
Vicente López

1.3 Radios Censales

Como información complementaria, el dataset posee una tabla con las geometrías de los distintos radios censales, a fin de poder realizar graficaciones.

Lectura de la df

# lectura de los polígonos de radios censales
if (SIG) {
  radios_censales <- sf::st_read(paste0(PATH, shapes_shp))
}
## Reading layer `Shape AMBA' from data source 
##   `F:\DocsAle\Diplomaturas\AdD y PP\04-Políticas Públicas y Machine Learning\proyecto_ machine_learning\datos\Shape AMBA.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 15123 features and 1 field
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -59.37685 ymin: -35.42203 xmax: -57.70947 ymax: -33.80567
## Geodetic CRS:  WGS 84
if (SIG) {
  sample_n(radios_censales, 2) |> 
    gt() |> 
     tab_header(title = "Radios Censales* - GeoDataFrame",
                subtitle = "* muestra"
                ) |>
  cols_label(
    CO_FRAC_RA = "Radio Censal",
    geometry = "Geometría"
  ) |>
    tab_options(table.width = "90%") |>
    gt_theme_pff()
}
Radios Censales* - GeoDataFrame
* muestra
Radio Censal Geometría
064278704 list(list(c(-58.6177876555659, -58.6174814901635, -58.6173658778975, -58.6173452401309, -58.616094275996, -58.6148545030254, -58.6141793257333, -58.614047226646, -58.6133941817076, -58.6124861859683, -58.6125502008053, -58.6116757050363, -58.6116535618921, -58.6126014552704, -58.6131830335919, -58.6137321576374, -58.614324670419, -58.6148736568073, -58.6160913697195, -58.6155314614251, -58.616660726557, -58.6178008875979, -58.6188967412283, -58.618706329206, -58.6185586993302, -58.6184109203577, -58.6180939757349, -58.6177876555659, -34.7664051468001, -34.7657707421602, -34.7654990314161, -34.7654266909593, -34.7664309742383, -34.7674173449612, -34.7679504555914, -34.7680120444336, -34.7685273760192, -34.7692651293896, -34.7693559914859, -34.7700490541128, -34.7700668280549, -34.7708617875154, -34.7713551298567, -34.7718300733806, -34.7723235348829, -34.7728074850197, -34.7718388916114, -34.7713548226686, -34.7704483097511, -34.7695419096391, -34.768671048748, -34.7682993448268, -34.767982205646, -34.7676740778482, -34.7670305391655, -34.7664051468001)))
066381713 list(list(c(-58.9090306712934, -58.9079993363171, -58.9073855419527, -58.9072529773444, -58.9063876900507, -58.9063544604656, -58.9061464347264, -58.9059174112733, -58.905689387115, -58.9055921665322, -58.9054950636857, -58.9053664952159, -58.9053037991211, -58.9053498504731, -58.9053720821429, -58.9044967575326, -58.903124241358, -58.9018166771636, -58.9011354938458, -58.9004379155956, -58.8996680012891, -58.8989146847371, -58.8991318281366, -58.9006730088165, -58.9010853604731, -58.9011397649429, -58.9021066309826, -58.902541277913, -58.9028672339969, -58.9034212776017, -58.9037526750653, -58.9045239274118, -58.9046543812563, -58.9058168221815, -58.9062514740533, -58.9066533659694, -58.9069361546472, -58.9074125503715, -58.9082372577915, -58.9085140276187, -58.9087629483717, -58.9088957444196, -58.9094266302134, -58.9090306712934, -34.4538345570553, -34.4544833742504, -34.4552395767751, -34.4553916306357, -34.4549872745747, -34.4550320475253, -34.4551293407609, -34.4551678544075, -34.4551297571789, -34.4550748025533, -34.4550108348596, -34.4548564448747, -34.4546575744326, -34.4544641848199, -34.4544283277084, -34.4539607701871, -34.4532363530321, -34.4525395462563, -34.4534528575565, -34.454370524329, -34.4554092252653, -34.4564255354001, -34.4564635472786, -34.4567748803129, -34.4568642213338, -34.4568647104078, -34.4569905806107, -34.4570395538058, -34.4570785359394, -34.4571511126726, -34.4571901412652, -34.457296209901, -34.457306392965, -34.4574565213412, -34.4575054814261, -34.4575631610015, -34.4575747040751, -34.4569254448471, -34.4558511277195, -34.4554885303346, -34.4551752609487, -34.4550051793804, -34.4543473840292, -34.4538345570553)))

PBA

# graficación de radios censales
if (SIG) {
  ggplot() +
    geom_sf(data = subset(radios_censales, !grepl("_", CO_FRAC_RA))) +
    labs(title = "Radios Censales en Área Metropolitana de Buenos Aires")
}

Radios CABA

if (SIG) {
  radios_caba <- subset(radios_censales, grepl("_", CO_FRAC_RA))
}
# Graficación de radios censales
if (SIG) {
  ggplot() +
    geom_sf(data = radios_caba) +
    labs(title = "Radios Censales en Ciudad Autónoma de Buenos Aires")
}

Dimensiones

cat("El DataFrame muestra que existen", dim(subset(radios_censales, grepl("_", CO_FRAC_RA)))[1], "radios censales para el territorio de CABA y y", dim(subset(radios_censales, !grepl("_", CO_FRAC_RA)))[1], "para la fracción de PBA incluida en AMBA")
## El DataFrame muestra que existen 3554 radios censales para el territorio de CABA y y 11569 para la fracción de PBA incluida en AMBA

2. Transformaciones

Debido a que algunas operaciones de Machine Learning superaban los umbrales de memoria y procesamiento disponibles, y otros arrojaban errores y advertencias, las alternativas para procesar la base son 2: 1. Seleccionar un subset de en base a alguna de sus características, como una localidad. 2. Unificar los datos de diferentes radios censales correspondientes a cada departamento.

Se opta por la segunda vía.

2.1 Agrupamiento por jurisdicción

Para realizar esta agrupación, se deben realizar los siguientes pasos: 1. Obtener los datos de Población y Viviendas para cada departamento 2. Calcular las remuneraciones totales de cada registro (Remuneracion_media * Cantidad_trabajadores) 3. Agrupar por radio censal(para obtener un único valor de Poblacion_radio y Viviendas_radio ) 4. Añadir los datos de población y vivienda obtenidos en 1)

Cantidad de registros por departamento

# Cantidad de registros por departamento
registros_depto <- as.data.frame(table(df$departamento_id))
colnames(registros_depto) <- c("departamento_id", "registros")
registros_depto |>
  arrange(registros) |> 
  head(10) |> 
  gt() |>
  tab_header(
    title = "Radios Censales por Departamento*",
    subtitle = "* muestra de los deparamentos con menos radios censales"
  ) |>
  tab_options(table.width = "60%") |>
  gt_theme_538()
Radios Censales por Departamento*
* muestra de los deparamentos con menos radios censales
departamento_id registros
6329 367
6119 615
6245 945
6525 992
6134 1545
6098 1709
6778 1765
6364 2126
6648 2302
6270 4060

Almacén de tablas auxiliares para verificación manual

if (!file.exists("datos/Auxiliar/df_gral_las_heras_6329.csv")) {
  if (!dir.exists("datos/Auxiliar")) {
    dir.create("datos/Auxiliar", recursive = TRUE)
    }
  df_6329 <- df[df$departamento_id == 6329, ]
  write.csv2(df_6329, "datos/Auxiliar/df_gral_las_heras_6329.csv", row.names = FALSE)
}

if (!file.exists("datos/Auxiliar/df_6329_x_dep.csv")) {
  df_sdxdep_6329 <- df_sin_des_x_dep[df_sin_des_x_dep$departamento_id == 6329, ]
  write.csv2(df_6329, "datos/Auxiliar/df_6329_x_dep.csv", row.names = FALSE)
}

Para analizar los resultados, se visualizarán los datos del departamento con menos radios censales, General las Heras (departamento_id = 6329).

2.1.1 Empleo AMBA

2.1.1.1 Población y Vivienda x Departamento
# eliminar advertencias de agrupación
options(dplyr.summarise.inform = FALSE)

# Obtener datos de poblacion y viviendas x radio
# datos_radio <- df |>
#   distinct(LINK, provincia_id, departamento_id, Poblacion_radio, Viviendas_radio)
# write.csv2(datos_radio[datos_radio$departamento_id == 6329, ], "datos/datos_radio.csv", row.names = FALSE)

# Obtener datos de poblacion y viviendas x departamento
datos_depto <- df |>
 distinct(LINK, provincia_id, departamento_id, Poblacion_radio, Viviendas_radio) |> 
  group_by(provincia_id, departamento_id) |>
  summarise(
    Poblacion_depto = sum(Poblacion_radio),
    Viviendas_depto = sum(Viviendas_radio)
    )
datos_depto[datos_depto$departamento_id == 6329, ] |> 
  ungroup() |> 
  gt() |>
  tab_header(
    title = "Población y Vivienda por Departamento*",
    subtitle = "* muestra sobre el departamento General Las Heras"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Población y Vivienda por Departamento*
* muestra sobre el departamento General Las Heras
provincia_id departamento_id Poblacion_depto Viviendas_depto
6 6329 11550 3616
2.1.1.2 Agrupación x departamento
# generar columnas de remuneración total
# agrupar por provincia y departamento
# dividir remuneración total por cantidad de trabajadores para obtener media departamental
# no se pudo realizar lo mismo para la mediana
df_x_depto <- df |>
  mutate(
    Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
    Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
    Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
  ) |>
  group_by(provincia_id, departamento_id, clae2, letra) |>
  summarise(
    Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
    Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
    Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE)
  )

df_x_depto[(df_x_depto$departamento_id == 6329) & (df_x_depto$clae2 == 1), ] |>
  ungroup() |> 
  gt() |>
  tab_header(
    title = "Trabajadores y Remuneración Media por Departamento*",
    subtitle = "* muestra sobre el departamento General Las Heras"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Trabajadores y Remuneración Media por Departamento*
* muestra sobre el departamento General Las Heras
provincia_id departamento_id clae2 letra Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres
6 6329 1 A 70 64 6 68085.28 68898.7 59408.86
2.1.1.3 Union de tablas
# añadir columnas poblacion y viviendas
df_x_depto <- df_x_depto |>
  left_join(datos_depto, by = c("provincia_id", "departamento_id"))

df_x_depto[(df_x_depto$departamento_id == 6329) & (df_x_depto$clae2 == 1), ] |> 
    ungroup() |> 
  gt() |>
  tab_header(
    title = "Union de Tablas",
    subtitle = "* muestra sobre el departamento General Las Heras y actividad A1"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Union de Tablas
* muestra sobre el departamento General Las Heras y actividad A1
provincia_id departamento_id clae2 letra Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion_depto Viviendas_depto
6 6329 1 A 70 64 6 68085.28 68898.7 59408.86 11550 3616

Dimensiones

# dimensiones
cat("El DataFrame tiene", dim(df_x_depto)[1], "observaciones y", dim(df_x_depto)[2], "variables.")
## El DataFrame tiene 4286 observaciones y 12 variables.

2.1.2 Empleo AMBA - Reducción a Letra

Se realiza idéntico procedimiento para esta tabla.

# Idéntico prodecimiento para la tabla "a letra"
df_x_letra_y_depto <- df_a_letra |>
  mutate(
    Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
    Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
    Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
  ) |>
  group_by(provincia_id, departamento_id, letra) |>
  summarise(
    Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
    Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
    Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE)
  )

# df_x_depto[(df_x_depto$departamento_id == 6329) & (df_x_depto$clae2 == 1), ]

# añadir columnas poblacion y viviendas
df_x_letra_y_depto <- df_x_letra_y_depto |>
  left_join(datos_depto, by = c("provincia_id", "departamento_id"))

df_x_letra_y_depto[df_x_letra_y_depto$departamento_id == 6329, ] |>
  ungroup() |> 
  gt() |>
  tab_header(
    title = "Empleo AMBA - Reducción a Letra y Jurisdicción*",
    subtitle = "* muestra sobre el departamento General Las Heras"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Empleo AMBA - Reducción a Letra y Jurisdicción*
* muestra sobre el departamento General Las Heras
provincia_id departamento_id letra Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion_depto Viviendas_depto
6 6329 A 70 64 6 68085.28 68898.70 59408.86 11550 3616
6 6329 B 2 1 1 458873.91 540003.46 377744.36 11550 3616
6 6329 C 587 511 76 102834.25 102475.59 105245.80 11550 3616
6 6329 D 16 13 3 157079.29 158866.27 149335.69 11550 3616
6 6329 E 5 5 0 168488.33 168488.33 NaN 11550 3616
6 6329 F 49 47 2 77762.73 75660.12 127174.11 11550 3616
6 6329 G 110 74 36 96469.81 114601.23 59199.66 11550 3616
6 6329 H 83 73 10 136781.35 143145.91 90320.12 11550 3616
6 6329 I 9 4 5 38468.91 60691.24 20691.05 11550 3616
6 6329 J 19 13 6 123972.63 143949.58 80689.22 11550 3616
6 6329 K 40 22 18 224067.79 210341.74 240844.07 11550 3616
6 6329 L 9 8 1 70895.82 70169.80 76703.95 11550 3616
6 6329 M 16 5 11 77230.82 70159.35 80445.12 11550 3616
6 6329 N 38 25 13 65115.28 71926.62 52016.55 11550 3616
6 6329 O 723 249 474 75463.16 72433.96 77054.45 11550 3616
6 6329 P 306 52 254 125554.98 147088.04 121146.64 11550 3616
6 6329 Q 34 6 28 109686.77 165294.52 97770.82 11550 3616
6 6329 R 3 1 2 63113.59 113857.88 37741.44 11550 3616
6 6329 S 39 23 16 123842.60 127926.71 117971.68 11550 3616

Dimensiones

# dimensiones
cat("El DataFrame tiene", dim(df_x_letra_y_depto)[1], "observaciones y", dim(df_x_letra_y_depto)[2], "variables.")
## El DataFrame tiene 1061 observaciones y 11 variables.

2.1.3 Empleo AMBA - Sin Desagregar

El procedimiento en este caso es más sencillo ya que existe 1 solo dato por radio censal, al no existir desagregaciones por categoría.

# realiza la misma operación para la tabla no desagregada por actividad
df_sin_des_x_dep <- df_sin_desagregar |>
  mutate(
    Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
    Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
    Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
  ) |>
  group_by(provincia_id, departamento_id) |>
  summarise(
    Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
    Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
    Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Poblacion_depto = sum(Poblacion_radio, na.rm = TRUE),
    Viviendas_depto = sum(Viviendas_radio, na.rm = TRUE)
  )

sample_n(df_sin_des_x_dep,5) |>
  ungroup() |> 
  gt() |> 
  tab_header(
    title = "Empleo AMBA - Sin Desagregar por Departamento",
    subtitle = "* muestra"
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538()
Empleo AMBA - Sin Desagregar por Departamento
* muestra
provincia_id departamento_id Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion_depto Viviendas_depto
2 2098 78990 41068 37750 189886.40 216297.5 160995.87 224320 140376
2 2014 55003 28115 26791 195681.88 227482.8 162043.88 157932 108136
2 2035 60000 30576 29328 138821.04 150301.4 127086.50 178452 92582
2 2084 67034 34564 32393 158720.45 179484.5 136705.56 200116 93502
2 2056 31920 18467 13438 103260.21 105485.6 100271.22 158184 47595
6 6749 16910 9475 7425 116108.09 126903.8 102425.48 155795 47223
6 6091 31008 18725 12271 105001.21 112470.7 93650.09 315441 91126
6 6760 29663 17614 12039 116538.07 125970.4 102780.93 274599 80150
6 6270 17209 11198 6000 101750.65 105790.5 94333.89 162305 44051
6 6329 2158 1196 962 98664.89 101917.2 94621.51 11550 3616

Dimensiones

# dimensiones
cat("El DataFrame tiene", dim(df_sin_des_x_dep)[1], "observaciones y", dim(df_sin_des_x_dep)[2], "variables.")
## El DataFrame tiene 51 observaciones y 10 variables.
# Cantidad de departamentos de df
cat("Cantidad de departamentos de la df:", length(unique(df$departamento_id)))
## Cantidad de departamentos de la df: 51
cat("Cantidad de departamentos de la tabla jurisdicciones:", length(unique(jurisdicciones$departamento_id)))
## Cantidad de departamentos de la tabla jurisdicciones: 53

Se observa que existen 2 jurisdicciones no representadas en el relevamiento del dataset.

deptos_omitidos <- setdiff(unique(jurisdicciones$departamento_id), unique(df$departamento_id))

jurisdicciones  |> 
  filter(departamento_id %in% deptos_omitidos) |>
  data.frame() |> 
  gt() |> 
  tab_header(
    title = "Departamentos sin Registros",
  ) |>
  tab_options(table.width = "65%") |>
  gt_theme_538()
Departamentos sin Registros
provincia_id provincia departamento_id departamento
6 PBA 6126 Campana
6 PBA 6497 Luján

2.2 Polígonos por jurisdicción

Se pretende unificar, de forma análoga a lo realizado con el dataset, a los polígonos de radios censales para crear polígonos por departamento.

2.2.1 Creación de lista de radios censales

# df con datos de radios censales, departamento y provincia
radio_depto <- df_sin_desagregar[, c("LINK", "provincia_id", "departamento_id")]

sample_n(radio_depto,5) |> 
    gt() |> 
  tab_header(
    title = "Lista de Radios Censales*",
    subtitle = "* muestra",
  ) |>
  tab_options(table.width = "50%") |>
  gt_theme_538()
Lista de Radios Censales*
* muestra
LINK provincia_id departamento_id
6_1_5 2 2042
1_23_2 2 2007
064274109 6 6427
11_11_5 2 2077
12_22_3 2 2084

2.2.2 Unificación con Geometrías

# Realizar un left join entre radios censales y radio_depto
radios_censales_con_depto <- merge(radios_censales, radio_depto, by.x = "CO_FRAC_RA", by.y = "LINK", all.x = TRUE)

sample_n(radios_censales_con_depto,2) |> 
  gt() |> 
  tab_header(
    title = "Radios Censales + Geometrías",
    subtitle = "* muestra",
  ) |>
    cols_label(
    CO_FRAC_RA = "Radio Censal",
    geometry = "Geometría"
  ) |>
tab_options(table.width = "90%") |>
  gt_theme_pff()
Radios Censales + Geometrías
* muestra
Radio Censal provincia_id departamento_id Geometría
066382301 6 6638 list(list(c(-58.8765589202287, -58.8758345564709, -58.8738726153358, -58.8732533437423, -58.872776178283, -58.8722727014635, -58.8720331410332, -58.8718556948018, -58.8713842533305, -58.8710228766807, -58.870187144565, -58.8698489842328, -58.869448209824, -58.8701453099559, -58.8708586848666, -58.8715611802628, -58.8729565780558, -58.8744063697498, -58.8751361729241, -58.8759567068989, -58.8767659701791, -58.8775086281185, -58.878905236773, -58.8795425615539, -58.8787798899082, -58.8773103230468, -58.8765589202287, -34.4924493321391, -34.4920730971994, -34.4910319457765, -34.4917473532536, -34.4924189987485, -34.493022794714, -34.4934307182593, -34.4936724566935, -34.4943216142881, -34.4948816475142, -34.4959015123097, -34.4963535890894, -34.4970078992652, -34.4973884267788, -34.4977736077455, -34.4981586841021, -34.4988340898785, -34.4995144880091, -34.4998952886366, -34.498789618039, -34.4977108797512, -34.4967261703109, -34.49487310442, -34.4940271314936, -34.4936640834665, -34.4928393322276, -34.4924493321391)))
064100514 6 6410 list(list(c(-58.7066005083747, -58.7060204443192, -58.7058933577661, -58.7057552259281, -58.705247085223, -58.7060326433903, -58.7065354720792, -58.7067023998361, -58.7068168323995, -58.7071505500491, -58.7071655084156, -58.7073646638181, -58.7075153765511, -58.7076241477658, -58.7079633234856, -58.7079673776874, -58.7081396229801, -58.7083280169605, -58.7084421719961, -58.7087761103686, -58.7087856180822, -58.7090332249911, -58.7092756599002, -58.7093952689549, -58.7097292135643, -58.7097606029, -58.7100246424689, -58.7101020272203, -58.7105990490733, -58.710914036394, -58.7108476169937, -58.7100940225114, -58.7092812998363, -58.7092218807675, -58.7090063644005, -58.7088555803196, -58.7083923956787, -58.7075738287646, -58.707046066265, -58.7067640804533, -58.7066005083747, -34.6462853713585, -34.6467659478867, -34.6468727615609, -34.6469884713917, -34.6474022059827, -34.6480865607297, -34.6476637530189, -34.6478007268533, -34.6478064473813, -34.6480894061426, -34.6481797001427, -34.6483485621906, -34.648476349479, -34.6484955295541, -34.6487785439779, -34.6488687223294, -34.6490147641139, -34.6491744970485, -34.6491982402101, -34.6494676766178, -34.6495579126981, -34.6497678460963, -34.6499596971684, -34.6499834971885, -34.65025293109, -34.6503388918924, -34.6505444904347, -34.6504777076236, -34.6500773556471, -34.6498102801799, -34.6495211445891, -34.648882226287, -34.6481885962228, -34.6481519130251, -34.6479828807341, -34.6478596012788, -34.647485140289, -34.6468184777252, -34.6463892459105, -34.6462871063973, -34.6462853713585)))

2.2.3 Verificación de correspondencia entre tablas

# Verificar si existen valores que no tengan correspondencia
cantidad_na <- sum(is.na(radios_censales_con_depto$departamento_id))
print(paste("Cantidad de valores NA en departamento_id:", cantidad_na))
## [1] "Cantidad de valores NA en departamento_id: 1241"

Existen múltiples NA, por lo que deben existir discrepancias de los datos o formato del id de radio censal entre la tabla de polígonos (radios censales), y las del df (radio_depto).

Contar valores únicos

# Contar valores únicos
valores_unicos_CO_FRAC_RA <- length(unique(radios_censales$CO_FRAC_RA))
print(paste("Valores únicos en CO_FRAC_RA:", valores_unicos_CO_FRAC_RA))
## [1] "Valores únicos en CO_FRAC_RA: 15123"
valores_unicos_LINK <- length(unique(radio_depto$LINK))
print(paste("Valores únicos en LINK:", valores_unicos_LINK))
## [1] "Valores únicos en LINK: 13882"

Verificar la diferencia

# Verificar si hay valores en CO_FRAC_RA que no están en LINK
missing_values <- setdiff(radios_censales$CO_FRAC_RA, radio_depto$LINK)

# Verificar si hay valores en LINK que no están en CO_FRAC_RA
missing_values_reverse <- setdiff(radio_depto$LINK, radios_censales$CO_FRAC_RA)

cat("Valores en CO_FRAC_RA que no están en LINK:", length(missing_values),"\n")
## Valores en CO_FRAC_RA que no están en LINK: 1241
cat("Valores en LINK que no están en CO_FRAC_RA:", length(missing_values_reverse))
## Valores en LINK que no están en CO_FRAC_RA: 0

Prueba de graficación

# Agrupar por provincia_id y departamento_id y unificar los polígonos
if (SIG) {
departamentos <- radios_censales_con_depto |>
  group_by(provincia_id, departamento_id) |>
  summarise(geometry = sf::st_union(geometry))
}
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Graficación de departamentos
if (SIG) {
  ggplot() +
    geom_sf(data = subset(departamentos, provincia_id == 6)) +
    labs(title = "Departamentos en Área Metropolitana de Buenos Aires - PBA")
}

El gráfico termina de confirmar que en el dataset no están representados todos los radios censales que existen en la df de polígonos. Por lo tanto, no es posible utilizar el left join realizado para obtener el id del departamento, debido a que los valores de radios en la df y en los polígonos no coinciden. Se prueba extrayendo los datos de los id de radios censales.

2.2.4 Método alternativo

Lista de comunas

# Filtrar los datos de la tabla jurisdicciones para provincia "CABA"
id_comunas <- jurisdicciones |>
  filter(provincia == "CABA") |>
  select(id = departamento_id, comuna = departamento) |>
  mutate(comuna = as.integer(sub("Comuna ", "", comuna)))

sample_n(id_comunas,5) |>
  gt() |> 
  tab_header(
    title = "ID Comunas CABA*",
    subtitle = "* muestra"
  ) |>
  tab_options(table.width = "50%") |>
  gt_theme_538()
ID Comunas CABA*
* muestra
id comuna
2098 14
2077 11
2049 7
2084 12
2007 1

2.2.5 Creación de subset CABA

Extraer número de comuna del id de radio censal

# Añadir columnas provincia_id y departamento_id
radios_caba <- radios_caba |>
  mutate(provincia_id = 2,
         departamento_id = as.integer(str_extract(CO_FRAC_RA, "^[0-9]+"))) |>
  select(CO_FRAC_RA, provincia_id, departamento_id, geometry)

Reemplazar nº de comuna por id de departamento

# Reemplazar el valor que hay almacenado en departamento_id (nº de comuna)
# por el id que figura en id_comuna
radios_caba <- radios_caba |>
  mutate(departamento_id = id_comunas$id[match(as.character(departamento_id), id_comunas$comuna)])

sample_n(radios_caba,2) |> 
  gt() |> 
  tab_header(
    title = "Comunas CABA*",
    subtitle = "* muestra"
  ) |>
  cols_label(
    CO_FRAC_RA = "Radio Censal",
    geometry = "Geometría"
  ) |>  
  tab_options(table.width = "90%") |>
  gt_theme_pff()
Comunas CABA*
* muestra
Radio Censal provincia_id departamento_id Geometría
11_17_4 2 2077 list(list(c(-58.4858606087564, -58.4852605982612, -58.4847825437919, -58.4857821226546, -58.486403893421, -58.4865284699617, -58.4872641767527, -58.4882038459049, -58.4883373895334, -58.4877285591576, -58.4876037263581, -58.4886782792979, -58.4879331233658, -58.4869168489684, -58.4863788521795, -58.4858606087564, -34.6180151864075, -34.6184943298508, -34.6188760504956, -34.6197560372423, -34.6202857253034, -34.6203914793811, -34.6210161440045, -34.6202666292243, -34.6201603299073, -34.6196410015143, -34.6195342627514, -34.6186775296534, -34.618041395992, -34.6171717824186, -34.6176014103035, -34.6180151864075)))
1_29_1 2 2007 list(list(c(-58.3911698240387, -58.3902481919316, -58.3896704043105, -58.3894377419194, -58.3894258960916, -58.3893691970475, -58.3893129280756, -58.3892931641991, -58.39004824467, -58.3909253131393, -58.3910614930745, -58.3911698240387, -34.627252999868, -34.627230835481, -34.6272169693416, -34.6272078154353, -34.6274057022881, -34.6281330165234, -34.6288545560634, -34.6290457477217, -34.6291764858308, -34.6293283481459, -34.6281994468917, -34.627252999868)))

2.2.6 Creación de subset PBA

# Crear un subset con los poligonos de PBA
radios_pba <- subset(radios_censales, !grepl("_", CO_FRAC_RA))

Extraer número de departamento del id de radio censal

# Añadir columnas provincia_id y departamento_id
radios_pba <- radios_pba |>
  mutate(provincia_id = 6,
         departamento_id = as.integer(str_sub(CO_FRAC_RA, 2, 5))) |>
  select(CO_FRAC_RA, provincia_id, departamento_id, geometry)

sample_n(radios_pba,2) |> 
    gt() |> 
  tab_header(
    title = "Departamentos PBA*",
    subtitle = "* muestra"
  ) |>
  cols_label(
    CO_FRAC_RA = "Radio Censal",
    geometry = "Geometría"
  ) |>  
  tab_options(table.width = "90%") |>
  gt_theme_pff()
Departamentos PBA*
* muestra
Radio Censal provincia_id departamento_id Geometría
062700216 6 6270 list(list(c(-58.5455972728557, -58.5454887418036, -58.5441767170143, -58.5428710528851, -58.5415852067046, -58.5415516147536, -58.5411763164739, -58.5407552149005, -58.5403402099528, -58.5399364500054, -58.5395325250424, -58.540822992045, -58.5420914539662, -58.5433819597551, -58.5438072564344, -58.5442436388111, -58.5447132892213, -58.5448589052866, -58.5451387266558, -58.5455972728557, -34.8618599448857, -34.8618135814445, -34.8611849929193, -34.8605068950228, -34.8599461903046, -34.8599908524784, -34.8605000923362, -34.8611259504709, -34.8617158281248, -34.8622878132382, -34.8628688079206, -34.8634791615614, -34.8640982508313, -34.864708578131, -34.8641548656188, -34.8635922712129, -34.8630030342586, -34.8628064906433, -34.8624403053748, -34.8618599448857)))
063710302 6 6371 list(list(c(-58.5653976142726, -58.5647010214571, -58.5656303006586, -58.5649450495654, -58.5656534577098, -58.5663729186222, -58.5670979882217, -58.5678269465073, -58.568582806171, -58.5678417122965, -58.5670891238426, -58.5663596338612, -58.5654142548765, -58.5653976142726, -34.5202211044101, -34.5208348529065, -34.5215758664949, -34.52216270877, -34.522765923741, -34.5233602509076, -34.5239456261987, -34.5233502710456, -34.5227732537223, -34.5221696721703, -34.5216020054452, -34.5209579903395, -34.5202032728298, -34.5202211044101)))

Unificación de df

# Unificar radios_caba y radios_pba
radios_censales_con_depto <- rbind(radios_caba, radios_pba)

2.2.7 Unificación de geometrías

links de referencia

# https://gis.stackexchange.com/questions/63577/joining-polygons-in-r
# https://r-spatial.github.io/sf/reference/geos_combine.html
# https://gis.stackexchange.com/questions/447288/the-combination-of-sfst-union-and-sfst-transform-turns-a-valid-geometry-into
# https://stackoverflow.com/questions/49354393/r-how-do-i-merge-polygon-features-in-a-shapefile-with-many-polygons-reproducib

Aplicación de la función

# Agrupar por provincia_id y departamento_id y unificar los polígonos
if (SIG) {
departamentos <- radios_censales_con_depto |>
  # filter(departamento_id == 2007) |>
  group_by(provincia_id, departamento_id) |>
  summarise(geometry = sf::st_union(geometry))
}
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Al parecer, el warning nos previene de que la unificación de polígonos no estaría generando resultados perfectos. Existen radios que no pueden ser unificados en un solo registro, por lo que suponemos que el fraccionamiento posee discrepancias.

departamentos |>
  ungroup() |> 
  sample_n(1) |> 
  gt() |> 
  tab_header(
    title = "Jurisdicciones AMBA - Polígonos*",
    subtitle = "* muestra"
    ) |>
  tab_options(table.width = "90%") |>
  gt_theme_pff()
Jurisdicciones AMBA - Polígonos*
* muestra
provincia_id departamento_id geometry
6 6408 list(c(-58.6898843308907, -58.6890341900105, -58.6879686809607, -58.6874492931312, -58.6866709457448, -58.6858923027284, -58.6820936138276, -58.6821798808092, -58.6832223653519, -58.683636366234, -58.6837869646115, -58.684104156231, -58.6843082574913, -58.684345907569, -58.6833630631935, -58.6826122219707, -58.6824355518659, -58.6817617066595, -58.6816512860772, -58.6793265213744, -58.6777801814448, -58.676962857308, -58.6761123187836, -58.6744831974204, -58.6744500665824, -58.6720310275313, -58.6698824672484, -58.6696063515778, -58.6677282938929, -58.6666566957314, -58.6666069198216, -58.6658282201827, -58.6657397842369, -58.6627455031036, -58.6627068416228, -58.6621819302634, -58.6614304899823, -58.6606732255322, -58.6605958993844, -58.6597617293841, -58.6589661376006, -58.6589495671709, -58.6580155831378, -58.6572972224585, -58.6566393219928, -58.6564459910962, -58.6556175673298, -58.6550483179821, -58.654407541633, -58.6541201489282, -58.6540256585643, -58.6540089409518, -58.6539529728768, -58.6538523756251, -58.6537735830097, -58.6537164495393, -58.65367007277, -58.6536466658835, -58.653620055266, -58.6535640761909, -58.6523828146679, -58.6510980549533, -58.650341418328, -58.6486138686481, -58.647146154596, -58.6458583315907, -58.6419704038462, -58.641697397622, -58.640763753527, -58.6375367982891, -58.6346867784415, -58.6346649731038, -58.6304404604488, -58.6292230322997, -58.6215904189882, -58.6213294180424, -58.6211145726093, -58.6206114074729, -58.6203515371794, -58.6203425699357, -58.6203429429892, -58.6201900018339, -58.6199135490628, -58.6197323136402, -58.6197270864728, -58.619845290682, -58.6199081628447, -58.6198874034188, -58.6198616407503, -58.6196563623146, -58.619585571871, -58.6194586266709, -58.6194781144399, -58.6193927646158, -58.6193053254093, -58.6192550721427, -58.6192498452691, -58.6192287138297, -58.6189808875853, -58.6188181855943, -58.6187717423268, -58.6186841576708, -58.6183660081612, -58.6181185742481, -58.6180482428894, -58.6179820210082, -58.6180030789615, -58.6190650187686, -58.6193795668256, -58.6198571667432, -58.6201830517779, -58.6202167971845, -58.6205137112864, -58.6205202052731, -58.6205208762824, -58.6205218455156, -58.6204861546637, -58.6204610660188, -58.6203619121984, -58.6203050923876, -58.6202267706201, -58.6202122099508, -58.6201975001733, -58.6202101900595, -58.6202619999104, -58.6203466591268, -58.6204082502393, -58.6205869017094, -58.6206878352633, -58.6208110157292, -58.621080218159, -58.6213377725971, -58.6215326188113, -58.6216337720226, -58.6217017037904, -58.6218024093437, -58.6218443569952, -58.6218901159461, -58.6218865278054, -58.6218926479318, -58.6218883150886, -58.6218731569505, -58.6218479927361, -58.6217189087057, -58.6214820940997, -58.6211592006367, -58.6210192186466, -58.6209923420638, -58.6207679953699, -58.6205861304559, -58.6203186354577, -58.62029190843, -58.6202761555217, -58.6202552510687, -58.620245246174, -58.6202162753259, -58.620187230058, -58.620164305651, -58.6200522340171, -58.6199141092464, -58.6198946223485, -58.6198530326823, -58.6198355592985, -58.6198649694512, -58.6198831821782, -58.6198888554054, -58.6200348675574, -58.620570774556, -58.620604216739, -58.6207147713877, -58.6207815809374, -58.6208660799046, -58.6209106442141, -58.6209332616107, -58.6209898422316, -58.6211473433502, -58.6212351181999, -58.6213724580504, -58.6214719489017, -58.6215424793439, -58.6215285142357, -58.6215239584961, -58.6214674414703, -58.6213825611367, -58.6212656556302, -58.6211480057826, -58.6206087954515, -58.6200959491578, -58.620022344474, -58.6198425903319, -58.6197474137882, -58.6196045378706, -58.6194298632098, -58.6193617099138, -58.6192930348531, -58.6192772097384, -58.6192666099511, -58.6191973385475, -58.6191342621555, -58.6191026867445, -58.6190869363501, -58.6186609346407, -58.6185750942608, -58.6177814892986, -58.6177117733931, -58.6175277831838, -58.6171442870675, -58.6170524082706, -58.6167659538946, -58.6167423707225, -58.6166816183869, -58.6164334881047, -58.6163963252415, -58.6163872960345, -58.616388043075, -58.6164820104138, -58.6167142037812, -58.6173829382966, -58.6185105115588, -58.6196211925096, -58.6201518205868, -58.621163356231, -58.6220199439613, -58.6248162503781, -58.6251091476958, -58.6266286054988, -58.6279269955684, -58.6284242549595, -58.6289435962926, -58.6303799654294, -58.6315125404798, -58.6326450896935, -58.6330096435848, -58.6341144791636, -58.6348880262857, -58.6356281407108, -58.6364236006159, -58.6373185697156, -58.6382961864179, -58.6383127485568, -58.6392737840595, -58.6395610750806, -58.6395721896314, -58.6395833041787, -58.6395943453246, -58.6400967883497, -58.6401188704195, -58.6412232551547, -58.6413723789731, -58.6421227058798, -58.6429266872276, -58.6436385719857, -58.6439806739278, -58.6452605940988, -58.6453280761402, -58.645384883413, -58.6454691440631, -58.6455698180442, -58.6457073046346, -58.6458220539258, -58.6458384261488, -58.6460163036998, -58.6477190205027, -58.6479905611861, -58.6488111424891, -58.6499453880363, -58.6501841775472, -58.6502276070968, -58.6508389581941, -58.6512761568491, -58.6517834412403, -58.651799636644, -58.6526457958944, -58.6537211053183, -58.6537537147502, -58.6538513978293, -58.6543018301403, -58.6548917820167, -58.6552057513686, -58.6554871844234, -58.6556223454017, -58.6559087916626, -58.6576476853818, -58.6603330395828, -58.6611203203234, -58.6623513321576, -58.6638738561319, -58.6639062521407, -58.6644890224511, -58.6648451663155, -58.665471092269, -58.6654872906389, -58.6661765770999, -58.6663380589892, -58.6664079410717, -58.6667195080406, -58.6667947662677, -58.6668592014717, -58.6672563501427, -58.6678412925013, -58.6684960560316, -58.668828781364, -58.668935938868, -58.668973497936, -58.6691664541709, -58.6693642845426, -58.6696387431029, -58.6697786608824, -58.6699615866698, -58.6702143290789, -58.6706523685473, -58.6715068780427, -58.6715339736186, -58.6728770767909, -58.6733597858295, -58.6737123207663, -58.6742062146555, -58.6749171665462, -58.674944334387, -58.6749659828441, -58.6755236110129, -58.6755397402244, -58.676019600305, -58.6760465540292, -58.6765255608303, -58.677026006757, -58.6770421364328, -58.6774400034441, -58.6774506852658, -58.6781419889334, -58.6793264019779, -58.6796104484349, -58.6800490023243, -58.6800757444599, -58.6803644610809, -58.6803751437815, -58.6805615574016, -58.6807427376298, -58.6810616576051, -58.6812152435641, -58.6812630679453, -58.6813853178405, -58.6816131896013, -58.6817413876923, -58.6819311952062, -58.6822015922197, -58.6823766235521, -58.6823445857823, -58.6823752847171, -58.6829004179229, -58.6834977399436, -58.6836921109625, -58.6839449955839, -58.6844206341676, -58.6847788917904, -58.6850173519774, -58.6857237542644, -58.6862567960884, -58.6868587565267, -58.6886345751955, -58.6890016184483, -58.6901193917809, -58.6903778927191, -58.6910028145306, -58.6920321702186, -58.6934172224342, -58.6921257816553, -58.6898843308907, -34.5968027605828, -34.5974921818016, -34.5983595526752, -34.598809152051, -34.5994362333871, -34.6000813335278, -34.6031770809404, -34.6032366010402, -34.6041807621724, -34.6045412660923, -34.6046690809896, -34.6049474166909, -34.6051389030458, -34.6051708565884, -34.6059714741578, -34.606576290673, -34.606718599725, -34.6072791745311, -34.6073681168987, -34.609262859028, -34.6105305395553, -34.6111976940897, -34.6118960298688, -34.6132213564562, -34.6132480370681, -34.61522273174, -34.6169794946849, -34.6172018217077, -34.6187406636434, -34.6196167864902, -34.6196613099754, -34.6202882481405, -34.620363895698, -34.6228278480927, -34.6228589715005, -34.6232948772072, -34.6239175783602, -34.624562744506, -34.6246249899043, -34.6253053595772, -34.625959106983, -34.6259724450393, -34.6267553600121, -34.6273513580762, -34.6279164704607, -34.6280720770247, -34.6287299466965, -34.629205892351, -34.6297216067824, -34.6299617998364, -34.6300734256925, -34.63009577492, -34.6301852921407, -34.6303374111751, -34.6304897708215, -34.6306513830117, -34.6308221274156, -34.6309210174369, -34.6312181689385, -34.6316456918145, -34.631528988783, -34.6314066228394, -34.6313306501156, -34.6312799714244, -34.6313448195843, -34.6314116476932, -34.6317740204399, -34.6317980203678, -34.631877752395, -34.6321617205526, -34.6324002496137, -34.6324000054828, -34.6326681057022, -34.6327625885442, -34.6327216208625, -34.6323491190207, -34.6321529007731, -34.6319173674483, -34.6318062663415, -34.6313599991955, -34.6313374697941, -34.630695784543, -34.6296110423235, -34.62903213037, -34.629018551032, -34.6287945525301, -34.6286195017309, -34.628556172641, -34.6284657465702, -34.6276927731102, -34.6273584740897, -34.6264647052154, -34.6262756432684, -34.6258330178179, -34.6255165570126, -34.6252591046012, -34.625245525242, -34.6252047254515, -34.6246971658895, -34.6243167582579, -34.6241584967984, -34.6238510473268, -34.6223241692683, -34.6211360961527, -34.6207747608676, -34.6201656019178, -34.619881916492, -34.6179740766404, -34.6174142958456, -34.6165544080141, -34.6159677127575, -34.6159050002033, -34.6154216311368, -34.6153586102823, -34.6153180572502, -34.6152594806479, -34.6151103547178, -34.6149793756298, -34.614712356747, -34.614522431148, -34.6143142353521, -34.6142059089755, -34.6141065943817, -34.6139985762567, -34.6138324130624, -34.6136576079195, -34.613559156333, -34.6133042927712, -34.6131341781388, -34.612937274531, -34.6124806307845, -34.6120689221106, -34.6118232535427, -34.6116396203068, -34.6114871587771, -34.6113305607597, -34.6111011909837, -34.6109710125135, -34.6108583034844, -34.6108178119698, -34.6107501619227, -34.6106778828342, -34.6105514098174, -34.6104462963516, -34.6102633507707, -34.610011830679, -34.6099065932996, -34.6098837557682, -34.6096063082355, -34.6093969417898, -34.6090919650724, -34.6090601156012, -34.6090238835085, -34.6089695661863, -34.608915372144, -34.6086897074563, -34.6084685486542, -34.6082068984118, -34.6074034308508, -34.6065275605108, -34.6063876310663, -34.6059364863822, -34.6056748976677, -34.6055445348841, -34.6054320723792, -34.6054186163354, -34.6051588770613, -34.6047232772508, -34.6046785879635, -34.6045851963741, -34.6045003236028, -34.6043345293897, -34.6042764455165, -34.6042271270164, -34.6041015777927, -34.6038059129789, -34.6034418587486, -34.6030468173412, -34.6026333210766, -34.6023231526118, -34.6021787789616, -34.6021246465386, -34.6019166976244, -34.6017760293526, -34.6015944383864, -34.6014579063543, -34.6004468065385, -34.5994900834981, -34.5993270080882, -34.5989914754772, -34.5988146356244, -34.5985561345693, -34.5982431925576, -34.5980801784349, -34.5979487055972, -34.5979169792748, -34.5978988323273, -34.5978034066629, -34.5976629836063, -34.597595025018, -34.5975587927695, -34.5966255803638, -34.5965434869967, -34.5957593381684, -34.5956909471209, -34.5949542625865, -34.5934311424677, -34.5930560409417, -34.5919261064896, -34.5917050084043, -34.5914249011646, -34.5886414226811, -34.5882534206463, -34.5881406494669, -34.5880955904197, -34.5880155343773, -34.5878153630483, -34.5872505847952, -34.5862898972855, -34.5853605550801, -34.5849068674631, -34.5840394839995, -34.5833145584124, -34.5809439995696, -34.5806949212148, -34.5794185897272, -34.5783290373455, -34.5779109910751, -34.5774751637061, -34.5762744649615, -34.5753227215478, -34.574370966865, -34.5740685902481, -34.5731435515371, -34.5724852037782, -34.5718715449096, -34.5712044183964, -34.5704482619803, -34.5696344327034, -34.5696210971478, -34.5688205950392, -34.5685759247197, -34.5685625282641, -34.5685491318074, -34.5685402413127, -34.5681312167073, -34.5681134356174, -34.5672063518123, -34.5670818219345, -34.5665042899104, -34.5659769242976, -34.5654169823154, -34.5651503762999, -34.5641640823454, -34.5640341344643, -34.5638905477069, -34.5637337452153, -34.5635726180009, -34.5634930213478, -34.5634717605359, -34.5631339330012, -34.5629150736132, -34.563402655753, -34.5634552385093, -34.5635815016079, -34.5638509394882, -34.5639076619294, -34.5639171557809, -34.5641808019398, -34.5644335072504, -34.5647320531059, -34.5647412455793, -34.5653094312501, -34.5655195954894, -34.5655244619594, -34.5655480733014, -34.5656566964939, -34.5658975526854, -34.5660226957857, -34.5661384660975, -34.5662030500115, -34.5663459153413, -34.5673024651909, -34.5690355379344, -34.5695444310693, -34.5702429618625, -34.5711114235389, -34.5711298053746, -34.571483207031, -34.5716989230523, -34.5720798329623, -34.5720890236762, -34.5725968131053, -34.5727202613147, -34.5727796132877, -34.5730579319613, -34.5731218492441, -34.5731811414614, -34.5735595431135, -34.574120265338, -34.574744841732, -34.5750639471122, -34.5751777857903, -34.575214249797, -34.575414653123, -34.57565116366, -34.575865975251, -34.575975663521, -34.5761218747271, -34.5763319415746, -34.5765395196563, -34.5769409159702, -34.5769502245186, -34.5774650921418, -34.5776055444202, -34.5777085257774, -34.5778310691, -34.5780100490324, -34.5780148508172, -34.5780240994665, -34.5782509858407, -34.5782646812863, -34.5785853641423, -34.578603683756, -34.5789784369738, -34.5793759547549, -34.5793896500101, -34.5797274656581, -34.5797411018183, -34.5804741864521, -34.5817263798512, -34.5820269022817, -34.5825499285141, -34.5825817653576, -34.5829319113524, -34.5829455472699, -34.5832179708895, -34.5834768172552, -34.5839850260725, -34.5842661074742, -34.5843432398779, -34.584538353261, -34.5849464272015, -34.5851100569136, -34.585513212245, -34.5859893463814, -34.5862931919062, -34.5869418246807, -34.5870683464782, -34.5876328586186, -34.5881125182811, -34.5882272851377, -34.5884328187327, -34.5886813148433, -34.5887708060723, -34.5888544984853, -34.5889837927252, -34.5890481213386, -34.5892348728768, -34.5903220821446, -34.5905468594552, -34.5915503598105, -34.5917469269661, -34.5922088194692, -34.5929454528703, -34.5939382679854, -34.5949700085824, -34.5968027605828))

Se observa que los polígonos departamentales son mucho más complejos.

Convertir a multipolígonos

# Asegura que todos son multipoligonos
if (SIG) {
departamentos <- departamentos |>
  filter(st_geometry_type(geometry) != "POINT")
}
# Graficación de departamentos
if (SIG) {
  ggplot() +
    geom_sf(data = subset(departamentos, provincia_id == 6)) +
    labs(title = "Departamentos en Área Metropolitana de Buenos Aires - PBA")
}

# graficación de barrios
if (SIG) {
  barrios_caba <- subset(departamentos, provincia_id == 2)
  ggplot() +
    geom_sf(data = barrios_caba) +
    labs(title = "Barrios en Ciudad Autónoma de Buenos Aires")
}

Visualmente se distinguen algunas imperfecciones y líneas internas, lo que refuerza la hipótesis de que estos polígonos poseen algunos defectos en su geometría.Como alternativa final, a fin de evitar problemas en la graficación, es posible utilizar polígonos departamentales de fuentes oficiales.

Fuentes

# https://datos.gob.ar/dataset/ign-unidades-territoriales/archivo/ign_01.02.02
# https://bam21.org.ar/gis/
# https://www.ign.gob.ar/NuestrasActividades/InformacionGeoespacial/CapasSIG

Se procedió a descargar el archivo de polígonos departamentales de Argentina desde la página de IGN (https://dnsg.ign.gob.ar/apps/api/v1/capas-sig/Geodesia+y+demarcaci%C3%B3n/L%C3%ADmites/departamento/shp), filtrando luego los que correspondían a departamentos y comunas de AMBA.

Lectura de la df

# lectura de los polígonos de radios censales
if (SIG) {
  deptos_ign <- sf::st_read(paste0(PATH, "AMBA_shapes.shp")) |> 
    mutate(in1 = as.numeric(in1))
}
## Reading layer `AMBA_shapes' from data source 
##   `F:\DocsAle\Diplomaturas\AdD y PP\04-Políticas Públicas y Machine Learning\proyecto_ machine_learning\datos\AMBA_shapes.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 54 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -59.37811 ymin: -35.42144 xmax: -57.70822 ymax: -33.9425
## Geodetic CRS:  WGS 84

Carga de datos IGN

if (SIG) {
    sample_n(deptos_ign,1) |> 
    gt() |> 
     tab_header(title = "Departamentos* - IGN - GeoDataFrame",
                subtitle = "* muestra"
                ) |>
    gt_theme_pff()
}
Departamentos* - IGN - GeoDataFrame
* muestra
gid objeto fna gna nam in1 fdc sag geometry
777 Departamento Partido de Brandsen Partido Brandsen 6119 ARBA - Gerencia de Servicios Catastrales IGN list(list(c(-58.1670369999999, -58.1695379999999, -58.169725528, -58.171294227, -58.1736999999999, -58.1770119999999, -58.177012517, -58.177251304, -58.16685, -58.165898, -58.16511, -58.164726, -58.162255, -58.158856, -58.1580552839999, -58.154073, -58.1507589999999, -58.1500369999999, -58.1479782919999, -58.1452889999999, -58.1449, -58.142927, -58.136225, -58.131277, -58.1100508769999, -58.1098542829999, -58.101843, -58.101831507, -58.101569432, -58.098316698, -58.0938513569999, -58.093272, -58.085093, -58.0845894249999, -58.083983857, -58.0800097159999, -58.0697989999999, -58.062541, -58.0618447799999, -58.0564919999999, -58.0522819999999, -58.051756, -58.050357, -58.0495420569999, -58.049302, -58.049174082, -58.042926, -58.0400309999999, -58.0360919999999, -58.031479197, -58.0306255799999, -58.0305759999999, -58.028956458, -58.024952572, -58.018931454, -58.018567177, -58.018072, -58.0202839999999, -58.028537, -58.03352431, -58.0380039999999, -58.03822, -58.0402719639999, -58.042245, -58.043006952, -58.0434339999999, -58.0458859999999, -58.048215999, -58.04848, -58.050652, -58.0537219999999, -58.0573909999999, -58.059451, -58.061574, -58.0693219999999, -58.076636696, -58.0766645209999, -58.077127, -58.0773359999999, -58.077531, -58.077121, -58.0654519999999, -58.056835999, -58.0553839999999, -58.054433, -58.054266, -58.0540859989999, -58.050871, -58.044929, -58.037806393, -58.037728, -58.0369449999999, -58.033947, -58.0302829999999, -58.027284, -58.026607, -58.025452656, -58.022482, -58.0184639999999, -58.018202999, -58.01267, -58.0061729999999, -58.0014389999999, -58.001203, -57.996792, -57.9904824829999, -57.983961, -57.983801999, -57.983553, -57.97588181, -57.970956256, -57.969470417, -57.9691053459999, -57.968108, -57.96532, -57.960541403, -57.95707, -57.9513449999999, -57.9494759999999, -57.9456029999999, -57.9453799999999, -57.942012, -57.9392149999999, -57.939432794, -57.939542, -57.93890372, -57.934386982, -57.930587159, -57.927495, -57.927331, -57.9271189999999, -57.9232019999999, -57.9222049269999, -57.917267, -57.9112499999999, -57.91029, -57.906648, -57.903407, -57.896874, -57.890917685, -57.890789855, -57.890210009, -57.890143, -57.894058, -57.896878, -57.8973839999999, -57.898759887, -57.9010989999999, -57.9043579999999, -57.904917, -57.905633, -57.906373, -57.9066979999999, -57.907747, -57.9091, -57.909166, -57.909489, -57.913039, -57.918874, -57.9207039999999, -57.927202, -57.928958, -57.9293769999999, -57.931135883, -57.9373899999999, -57.9400889999999, -57.953694, -57.9581709999999, -57.970657999, -57.970796, -57.970986, -57.982447, -57.985236495, -57.9939259999999, -57.994781662, -57.998466999, -58.000528, -58.0168193819999, -58.017556, -58.034467999, -58.035587, -58.035808365, -58.0358409999999, -58.0367724559999, -58.037036585, -58.0370839999999, -58.037932069, -58.03873, -58.0392209999999, -58.0393529999999, -58.0397629999999, -58.040001, -58.040311, -58.041195, -58.041401638, -58.041784, -58.0425799989999, -58.042658105, -58.043278, -58.0439499999999, -58.044276999, -58.044573, -58.044821, -58.0449879999999, -58.045153918, -58.0454525809999, -58.0483619999999, -58.049156, -58.055102, -58.056711934, -58.0592155739999, -58.059723, -58.065053162, -58.068126999, -58.076047, -58.077024396, -58.0807374359999, -58.084867, -58.087933, -58.0953939999999, -58.102855, -58.1057279999999, -58.112945, -58.1216269999999, -58.122846, -58.1340099999999, -58.138618, -58.13919579, -58.1392069999999, -58.145226, -58.145588394, -58.1506919999999, -58.1531449999999, -58.15486, -58.154976092, -58.1549882309999, -58.154978966, -58.1548616969999, -58.1569909999999, -58.161013, -58.161313, -58.1655289999999, -58.168677999, -58.1697409999999, -58.175405999, -58.1814929999999, -58.181941514, -58.1820989999999, -58.182790309, -58.1862439999999, -58.186278514, -58.1868499999999, -58.186985756, -58.1945489999999, -58.1947749999999, -58.1964179999999, -58.209582, -58.2100119999999, -58.2125180639999, -58.219269001, -58.2254589999999, -58.2256849999999, -58.234617, -58.242779, -58.243013316, -58.2432372769999, -58.2595549989999, -58.2526599999999, -58.2484479999999, -58.2480189999999, -58.2467, -58.246816, -58.2469409999999, -58.247372637, -58.247422, -58.2474626429999, -58.24891, -58.249427, -58.2500154319999, -58.259014043, -58.280816, -58.281022983, -58.2813849999999, -58.2817155399999, -58.2819909999999, -58.292432, -58.3027949999999, -58.3088379449999, -58.309116, -58.30960706, -58.309721, -58.313775, -58.3153589999999, -58.315688, -58.3231929999999, -58.331558, -58.331782, -58.334628218, -58.335188, -58.335661, -58.3456533459999, -58.3459769999999, -58.3460998749999, -58.3462789989999, -58.3456967179999, -58.345561, -58.353917, -58.3646249999999, -58.3648219999999, -58.370421311, -58.3707529989999, -58.371559857, -58.371684, -58.3847102299999, -58.3851549999999, -58.385689127, -58.385759, -58.3922719999999, -58.398882, -58.399105, -58.400446936, -58.407477, -58.4155499999999, -58.4182759999999, -58.421664, -58.42611389, -58.426139, -58.426344, -58.426720772, -58.4267429989999, -58.426948, -58.427247584, -58.428189, -58.429273, -58.4304, -58.431545, -58.43278, -58.43317286, -58.435819, -58.43636, -58.442483895, -58.4429626739999, -58.4440792999999, -58.446903, -58.4461112349999, -58.44591109, -58.4234519999999, -58.414816, -58.410697, -58.3604256789999, -58.3527099999999, -58.3388439999999, -58.308326, -58.291569, -58.286525248, -58.2786149999999, -58.278113, -58.274785999, -58.274554, -58.273432, -58.264965, -58.262245999, -58.248954, -58.2445865839999, -58.244541, -58.2427852829999, -58.241285521, -58.2362679999999, -58.237391427, -58.240619937, -58.247687, -58.2465844079999, -58.2464869999999, -58.246465171, -58.2363990379999, -58.229741052, -58.227954825, -58.1917070059999, -58.182766869, -58.1765193209999, -58.161733692, -58.161419, -58.161175, -58.1608689999999, -58.160616728, -58.1605011409999, -58.160335, -58.1560295199999, -58.150969999, -58.14936317, -58.143124166, -58.1411239999999, -58.1364641439999, -58.127447, -58.125753, -58.1234499999999, -58.120421123, -58.12038, -58.120457436, -58.120261, -58.1204509999999, -58.125214, -58.125459, -58.127679604, -58.127878, -58.129851, -58.1303849999999, -58.1359689999999, -58.1360989999999, -58.136228, -58.1368861089999, -58.140552079, -58.140959, -58.1412079999999, -58.156430999, -58.16147, -58.161753, -58.163898, -58.164734, -58.1670369999999, -35.0477359999999, -35.0500709999999, -35.050243074, -35.0516824919999, -35.05389, -35.056972, -35.056972389, -35.057152087, -35.0651579999999, -35.0658989999999, -35.0665119999999, -35.0667989999999, -35.068723, -35.0713019999999, -35.071905509, -35.0749069999999, -35.077441, -35.077985, -35.079571957, -35.081645, -35.0819739999999, -35.083456, -35.088565, -35.0923789999999, -35.108428287, -35.108254605, -35.101177, -35.1011852829999, -35.101374157, -35.1037183569999, -35.106936466, -35.1073539999999, -35.113554, -35.1139330299999, -35.114388827, -35.1173800789999, -35.12501, -35.130394, -35.130908828, -35.1348669999999, -35.138028, -35.13843, -35.139448, -35.140099955, -35.1402919999999, -35.1403838059999, -35.144868, -35.147015, -35.150024, -35.1535137069999, -35.154159491, -35.154197, -35.1560046619999, -35.1604736309999, -35.1671941459999, -35.1675827519999, -35.168111, -35.169992, -35.1770969999999, -35.1813894479999, -35.185245, -35.185513, -35.1872764149999, -35.188972, -35.189741001, -35.190172, -35.192284, -35.194296, -35.194544, -35.196447, -35.1991179999999, -35.202376, -35.204201, -35.206026, -35.2128109999999, -35.2192147559999, -35.219239116, -35.219644, -35.2198289999999, -35.220003, -35.220321, -35.228806, -35.235058, -35.2357989999999, -35.2365799999999, -35.236705, -35.2368269999999, -35.23382, -35.228308, -35.22160181, -35.221528, -35.2207569999999, -35.217981, -35.214486, -35.211627, -35.2109859999999, -35.209906933, -35.2071299999999, -35.203475, -35.203209, -35.198497, -35.192962, -35.1889609999999, -35.1886759999999, -35.18474, -35.1793308589999, -35.17374, -35.1735869999999, -35.173379, -35.1665794799999, -35.162213612, -35.1608966059999, -35.160573018, -35.159689, -35.16351, -35.1670716579999, -35.1697829999999, -35.174254, -35.1756809999999, -35.1786719999999, -35.178844, -35.181436, -35.183569, -35.1837528259999, -35.183845, -35.184319973, -35.187681084, -35.190508705, -35.1928599999999, -35.192942, -35.1930849999999, -35.1960159999999, -35.196758436, -35.20061, -35.205363, -35.206114, -35.208963, -35.2115239999999, -35.216743, -35.221519733, -35.221622247, -35.222087261, -35.222141, -35.2255709999999, -35.228015, -35.2284559999999, -35.2296441139999, -35.231664, -35.234438, -35.2349129999999, -35.2355469999999, -35.2361999999999, -35.2367869999999, -35.2376629999999, -35.2387919999999, -35.238847, -35.2391049999999, -35.2421239999999, -35.247001, -35.248531, -35.253933, -35.255392, -35.255622, -35.257092675, -35.262322, -35.264553, -35.2756889999999, -35.279351, -35.2896049999999, -35.2897189999999, -35.2898749999999, -35.299325, -35.301615355, -35.30875, -35.309512201, -35.3127949999999, -35.314782, -35.3282385589999, -35.3288469999999, -35.3428269999999, -35.343789, -35.3439711469999, -35.3439979999999, -35.343330556, -35.343136785, -35.3431019999999, -35.342354401, -35.341651, -35.341039, -35.3406909999999, -35.339672, -35.339323, -35.339086, -35.3383969999999, -35.338273016, -35.337975, -35.337498, -35.3374436829999, -35.336868, -35.336193, -35.3357809999999, -35.335259, -35.3345629999999, -35.3346969999999, -35.33485028, -35.335126193, -35.337814, -35.338609, -35.3440649999999, -35.345545331, -35.347847423, -35.348314, -35.353195754, -35.356011, -35.363219, -35.364119046, -35.367538243, -35.371341, -35.3741669999999, -35.3810809999999, -35.387956, -35.3906249999999, -35.3973389999999, -35.405245, -35.4061349999999, -35.416194, -35.420373, -35.4199408339999, -35.419951, -35.415448, -35.415178624, -35.4113849999999, -35.409482, -35.408153, -35.408248038, -35.408257975, -35.4082457439999, -35.408090933, -35.4063459999999, -35.40305, -35.402835, -35.3994939999999, -35.3969979999999, -35.3961459999999, -35.391602, -35.386702, -35.386397776, -35.386271, -35.3858011959999, -35.3830129999999, -35.383042524, -35.382581, -35.3826971299999, -35.3891669999999, -35.389466, -35.390885, -35.402118, -35.4023999999999, -35.403926288, -35.408037865, -35.403428, -35.4032529999999, -35.3965969999999, -35.390392, -35.3902418399999, -35.3900715569999, -35.377109, -35.370688, -35.3670099999999, -35.366664, -35.3654349999999, -35.365325, -35.365261, -35.3649394089999, -35.3648929999999, -35.364872351, -35.363794, -35.3633859999999, -35.362931267, -35.355977261, -35.339129, -35.339004592, -35.338787, -35.3385202759999, -35.338355, -35.3299289999999, -35.322168, -35.317657082, -35.317495, -35.317128703, -35.317062, -35.314039, -35.3128859999999, -35.3126399999999, -35.3070489999999, -35.300808, -35.3006589999999, -35.2984829719999, -35.298055, -35.298012, -35.291806013, -35.2916049999999, -35.2915203709999, -35.291397, -35.2907498399999, -35.2905989999999, -35.284367, -35.276292, -35.2759809999999, -35.271451327, -35.271183, -35.2706959389999, -35.2706209999999, -35.2609272399999, -35.2606949999999, -35.260298485, -35.260262, -35.2554269999999, -35.2505189999999, -35.250329, -35.2493079619999, -35.243959, -35.2377759999999, -35.2356859999999, -35.2329579999999, -35.2294775729999, -35.229464, -35.229342, -35.2290429509999, -35.229031, -35.2289089999999, -35.228671215, -35.227924, -35.227066, -35.2261809999999, -35.225293, -35.224322, -35.224015106, -35.2219479999999, -35.2213869999999, -35.216506464, -35.216238265, -35.2156127609999, -35.214031, -35.2133251939999, -35.213146778, -35.1931259999999, -35.1854339999999, -35.188431, -35.1445915159999, -35.137863, -35.1485269999999, -35.122176, -35.1078239999999, -35.103611529, -35.097005, -35.096605, -35.0938889999999, -35.0936839999999, -35.092866, -35.0850139999999, -35.0824299999999, -35.070031, -35.066019866, -35.065978, -35.06434325, -35.0629468189999, -35.058275, -35.057438357, -35.0550340089999, -35.049771, -35.0482847379999, -35.048357, -35.0483373659999, -35.0392836679999, -35.033295332, -35.0316887609999, -34.999086688, -34.991045737, -34.9854265559999, -34.972128041, -34.971845, -34.972191, -34.9726669999999, -34.9729537589999, -34.9730851469999, -34.9732739999999, -34.976571626, -34.980562, -34.981783419, -34.9867043839999, -34.988282, -34.9918982689999, -34.9988959999999, -35.00021, -35.001997, -35.004347093, -35.004379, -35.0044481799999, -35.0045719999999, -35.004717, -35.0091189999999, -35.0093229999999, -35.011400399, -35.011586, -35.0133489999999, -35.013839, -35.018953, -35.0190719999999, -35.019191, -35.0197979179999, -35.023178731, -35.0235539999999, -35.023766, -35.0379419999999, -35.0426409999999, -35.042832, -35.0448479999999, -35.0456579999999, -35.0477359999999)))

Por su tamaño, se puede suponer que estos polígonos son bastante más complejos.

Graficación

# Graficación de departamentos
if (SIG) {
  ggplot() +
    geom_sf(data = subset(deptos_ign, gna == "Comuna")) +
    labs(title = "Comunas en Ciudad de Buenos Aires - IGN")
}

El resultado es en apariencia más prolijo que la unión de polígonos de radios censales.

3. Descripción

Para la descripción y análisis se generaron alias de las tablas principales:

  • Empleo AMBA –> df
  • Empleo AMBA a Letra –> df_a_letra & empleo_tipo
  • Empleo AMBA sin desagregar –> df_sin_desagregar & empleo
  • Empleo AMBA x departamento –> df_x_depto
  • Empleo AMBA x letra y departamento –> df_x_letra_y_depto
  • Empleo AMBA sin desagregar x departamento –> df_sin_des_x_dep
  • Radios Censales –> radios_censales
  • Departamentos IGN –> deptos_ign
# Lista de tablas
tabla_df <- data.frame(
  `tipo` = c(
    "Completa (CLAE nivel 2)", "x Letra", "Sin actividad", "Polígonos"
  ),
  `X radio censal` = c("df", "df_a_letra, empleo tipo", "df_sin_desagregar, empleo", "radios_censales"),
  `X departamento` = c("df_x_depto", "df_x_letra_y_depto", "df_sin_des_x_dep", "deptos_ign"),
  `Consolidado` = c("","df_x_actividad","totales","")
)

tabla_df |>
  gt(rowname_col = "tipo") |>
  tab_options(table.width = "75%") |>
  # tab_stubhead(label = "Variable") |> 
  opt_stylize(style = 5, color = 'cyan')
X.radio.censal X.departamento Consolidado
Completa (CLAE nivel 2) df df_x_depto
x Letra df_a_letra, empleo tipo df_x_letra_y_depto df_x_actividad
Sin actividad df_sin_desagregar, empleo df_sin_des_x_dep totales
Polígonos radios_censales deptos_ign

3.1 Remuneración Promedio

3.1.1 Totales PBA y CABA

Totales

totales <- df_sin_des_x_dep |>
  ungroup() |>
  mutate(
    Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
    Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
    Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
  ) |>
  summarise(
    Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
    Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
    Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Poblacion = sum(Poblacion_depto, na.rm = TRUE),
    Viviendas = sum(Viviendas_depto, na.rm = TRUE)
  )

totales |>
  gt() |>
  tab_header(
    title = "Empleo AMBA - Totales",
  ) |>
  tab_options(table.width = "75%") |>
  opt_stylize(style = 5, color = 'cyan')
Empleo AMBA - Totales
Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion Viviendas
2260438 1277548 980849 127592 136589.1 115864.2 13912400 4688453

Parciales CABA y PBA

remuneraciones <- df_sin_des_x_dep |>
  mutate(
    Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
    Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
    Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
  ) |>
  summarise(
    Trabajadores_total = sum(Cantidad_trabajadores, na.rm = TRUE),
    Trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
    Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Poblacion = sum(Poblacion_depto, na.rm = TRUE),
    Viviendas = sum(Viviendas_depto, na.rm = TRUE)
    ) |>
      left_join(distinct(select(jurisdicciones, 1:2)), by = c("provincia_id" = "provincia_id")) |> 
  select(c(10,2,3,4,5,6,7,8,9))

#https://gt.rstudio.com/reference/data_color.html
remuneraciones |> 
  column_to_rownames(var="provincia") |> 
  t() |> 
  as.data.frame() |>
  rownames_to_column(var="variable") |> 
  gt(rowname_col = "variable") |> 
  tab_header(title = "Empleo AMBA - Parciales CABA y PBA") |>
  tab_row_group(
    label = "Cantidad",
    rows = matches("^Trabajadores")
    )  |>
  tab_row_group(
    label = "Remuneración",
    rows = matches("^Remuneracion")
  ) |>
  row_group_order(groups = c("Cantidad", "Remuneración", NA)) |> 
  tab_options(row_group.default_label = "Población y Vivienda") |> 
  tab_options(table.width = "75%") |>
  opt_stylize(style = 5, color = 'cyan') |> 
   data_color(
    method = "bin",
    palette = "RdBu",
    domain = c(170000, 100000),
    rows = c(5,6)
  )
Empleo AMBA - Parciales CABA y PBA
CABA PBA
Cantidad
Trabajadores_total 881711.0 1378727.0
Trabajadores_Hombres 463689.0 813859.0
Trabajadores_Mujeres 416630.0 564219.0
Remuneración
Remuneracion_media 151177.4 112508.8
Remuneracion_media_Hombres 167546.5 118951.4
Remuneracion_media_Mujeres 132932.9 103260.3
Población y Vivienda
Poblacion 2755077.0 11157323.0
Viviendas 1361627.0 3326826.0

Como puede apreciarse de esta tabla, existe se evidencia que existe una brecha salarial no solo por género, sino por ubicación, con una diferencia notable entre CABA y el sector AMBA de la PBA, incluso más pronunciada que la de género. Esto no implica que en las variables geográficas puedan jugarse otros factores, como el costo de vida, o el tipo de actividad, pero es una primera apreciación.

3.1.2 Por Jurisdicción

Gráfigo geoespacial

# Gráfico de remuneración promedio por jurisdicción
df_sin_des_x_dep |> 
  left_join(select(deptos_ign, c(5,6,9)), by = c("departamento_id" = "in1")) |> 
  ggplot(aes(fill = Remuneracion_media, geometry = geometry)) +
  geom_sf() +
    scale_fill_viridis_c(option = "D", 
                       direction = 1, 
                       limits = c(90000, 200000)) +
labs(title = "Remuneración Media por Jurisdicción")

# Gráfico de remuneración promedio por comuna
df_sin_des_x_dep[df_sin_des_x_dep$provincia_id == 2, ] |> 
  left_join(select(deptos_ign, c(5,6,9)), by = c("departamento_id" = "in1")) |> 
  ggplot(aes(fill = Remuneracion_media, geometry = geometry)) +
  geom_sf() +
  scale_fill_viridis_c(option = "D", 
                       direction = 1, 
                       limits = c(90000, 200000)) +
  labs(title = "Remuneración Media por Comuna CABA")

Visualmente se aprecia una diferencia importante de salario promedio para zona norte de CABA y del Gran Buenos Aires, y que si bien en CABA se observa un promedio mayor que en el resto del AMBA, esta diferencia no está repartida homogeneamente (se utiliza misma escala para ambos gràficos).

Gráficos de barras

# Gráfico de barras de remuneración promedio por jurisdicción
#https://ggplot2.tidyverse.org/reference/scale_viridis.html

df_sin_des_x_dep |>
  left_join(select(jurisdicciones, c(3,4)), by = c("departamento_id" = "departamento_id")) |> 
  ggplot(aes(Remuneracion_media, reorder(departamento, Remuneracion_media))) +
  geom_col(width = 0.7, alpha = 0.8, show.legend = FALSE,
           aes(fill = reorder(departamento, Remuneracion_media),
               color=reorder(departamento, Remuneracion_media))) +
  scale_fill_viridis_d(option = "D", 
                       direction = 1, 
                       aesthetics = c("colour", "fill")) +
  scale_x_continuous(expand = c(0.01,0),
                     labels = scales::dollar_format(prefix = " AR$",
                                                    big.mark = ".",
                                                    decimal.mark = ",",)) + 
  geom_text(aes(label = sprintf("AR$ %.2f", Remuneracion_media)),
            hjust = 1, size = 2.5, nudge_y = 0.04) +
  labs(title = "Remuneración Promedio por Jurisdicción",
       subtitle = "Listado completo",
       x = "Remuneración Promedio", y = "Jurisdicción")

# Gráfico de remuneración promedio por género y jurisdicción
df_sin_des_x_dep |>
  left_join(select(jurisdicciones, c(3,4)), by = c("departamento_id" = "departamento_id")) |> 
  ggplot() +
  geom_col(aes(-Remuneracion_media_Hombres,
               reorder(departamento, Remuneracion_media),
               color=Remuneracion_media_Hombres,
               fill=Remuneracion_media_Hombres),    
           width = 0.7,
           alpha = 0.8,
           show.legend = FALSE)+
  geom_text(aes(0,
                reorder(departamento, Remuneracion_media_Hombres),
                label = sprintf("AR$ %.2f", Remuneracion_media_Hombres)),
            hjust = 1.2, size = 2.5, nudge_y = 0.04) +
  geom_col(aes(Remuneracion_media_Mujeres,
               reorder(departamento, Remuneracion_media_Hombres),
               color=Remuneracion_media_Mujeres,
               fill=Remuneracion_media_Mujeres),    
           width = 0.7,
           alpha = 0.8,
           show.legend = FALSE)+
  geom_text(aes(0,
                reorder(departamento, Remuneracion_media),
                label = sprintf("AR$ %.2f", Remuneracion_media_Mujeres)),
            hjust = -0.2, size = 2.5, nudge_y = 0.04) +
  scale_fill_viridis_c(option = "D", 
                       direction = 1, 
                       aesthetics = c("colour", "fill")) +
  scale_x_continuous(limits = c(-228000,228000),
                     labels = scales::dollar_format(prefix = " AR$",
                                                    big.mark = ".",
                                                    decimal.mark = ",",)) +
   labs(title = "Remuneración Promedio por Jurisdicción y Género*",
        subtitle = "* ordenada por Remuneración promedio General",        
       x = "Hombres - Remuneración Promedio - Mujeres", y = "Jurisdicción")

De estos gráficos se desprende que 10 de las comunas CABA están en el top 15, y que la excepción al promedio es Comuna 8 (Villa Soldati, Villa Riachuelo, Villa Lugano), que se ubica entre las 10 jurisdicciones con remuneración media más baja. La brecha es evidente, siendo que el de mayor promedio, Comuna 2 (Recoleta), duplica en remuneración promedio a la última, Presidente Perón.

En el 2do gráfico de barras, se aprecia que la brecha de remuneración por género se mantiene de manera constante, si bien quizças parece más acentuada en las jurisdicciones de mayor promedio general.

3.1.3 Por Actividad

Cálculo de df consolidada x actividad

# Calcula totales por actividad
df_x_actividad <- df_x_letra_y_depto |>
  mutate(
    Remuneracion_total = Remuneracion_media * Cantidad_trabajadores,
    Remuneracion_total_Hombres = Remuneracion_media_Hombres * Cantidad_trabajadores_Hombres,
    Remuneracion_total_Mujeres = Remuneracion_media_Mujeres * Cantidad_trabajadores_Mujeres
  ) |>
  group_by(letra) |>
  summarise(
    Cantidad_trabajadores = sum(Cantidad_trabajadores, na.rm = TRUE),
    Cantidad_trabajadores_Hombres = sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Cantidad_trabajadores_Mujeres = sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Remuneracion_media = sum(Remuneracion_total, na.rm = TRUE) / sum(Cantidad_trabajadores, na.rm = TRUE),
    Remuneracion_media_Hombres = sum(Remuneracion_total_Hombres, na.rm = TRUE) / sum(Cantidad_trabajadores_Hombres, na.rm = TRUE),
    Remuneracion_media_Mujeres = sum(Remuneracion_total_Mujeres, na.rm = TRUE) / sum(Cantidad_trabajadores_Mujeres, na.rm = TRUE),
    Poblacion = sum(datos_depto$Poblacion_depto, na.rm = TRUE),
    Viviendas = sum(datos_depto$Viviendas_depto, na.rm = TRUE)
  )

df_x_actividad |>
  ungroup() |> 
  gt() |>
  tab_header(
    title = "Empleo AMBA - Por Actividad",
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538() |> 
  data_color(
    palette = "plasma",
    columns = 2
  ) |> 
    data_color(
    palette = "plasma",
    columns = 5
  )
Empleo AMBA - Por Actividad
letra Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion Viviendas
71 40 31 71351.19 69711.27 73467.23 13912400 4688453
A 9192 6540 2639 138562.86 140644.28 132381.76 13912400 4688453
B 7818 5187 2606 415222.50 468673.59 300370.29 13912400 4688453
C 304337 236510 67562 135728.31 138584.01 125739.59 13912400 4688453
D 8968 7075 1891 274281.30 288482.98 221074.89 13912400 4688453
E 16605 14669 1935 182874.24 180178.17 203367.96 13912400 4688453
F 76490 69037 7216 81069.61 78098.72 109922.93 13912400 4688453
G 254633 158336 95809 104441.16 109719.90 95712.35 13912400 4688453
H 137829 118369 19420 135964.85 137947.50 123942.36 13912400 4688453
I 64442 36851 27387 54677.24 56268.96 52620.87 13912400 4688453
J 102681 67293 35222 204829.50 222169.73 171798.01 13912400 4688453
K 86444 41269 45136 257629.06 301140.91 217663.25 13912400 4688453
L 17717 10467 7236 92034.19 101580.22 78265.67 13912400 4688453
M 67247 33330 33810 156256.58 179092.63 133787.52 13912400 4688453
N 139458 89161 50139 91247.11 97436.48 80088.83 13912400 4688453
O 437728 195576 242088 131208.71 143078.50 121626.17 13912400 4688453
P 291301 84652 206593 99569.81 100343.55 99262.86 13912400 4688453
Q 117823 35355 82394 122798.20 139294.32 115765.75 13912400 4688453
R 22344 13911 8410 92334.36 101975.41 75835.35 13912400 4688453
S 94746 52766 41924 111456.76 122155.58 98020.67 13912400 4688453
T 18 13 5 73358.61 79546.93 57268.97 13912400 4688453
U 968 431 532 235940.21 239518.69 233187.92 13912400 4688453

Gráficos de barras

# Gráfico de barras de remuneración promedio por actividad

df_x_actividad |>
  ungroup() |> 
  left_join(distinct(select(actividades, c(3,4))), by = c("letra" = "letra")) |> 
  mutate(Actividad = paste0(letra," - ",letra_desc)) |> 
  ggplot(aes(Remuneracion_media, reorder(Actividad, Cantidad_trabajadores))) +
  geom_col(width = 0.7, alpha = 0.8, show.legend = FALSE,
           aes(fill = reorder(letra, Remuneracion_media),
               color=reorder(letra, Remuneracion_media))) +
  scale_fill_viridis_d(option = "C", 
                       direction = 1, 
                       aesthetics = c("colour", "fill")) +
  scale_x_continuous(expand = c(0.01,0),
                     labels = scales::dollar_format(prefix = " AR$",
                                                    big.mark = ".",
                                                    decimal.mark = ",",)) + 
  geom_text(aes(label = sprintf("AR$ %.2f", Remuneracion_media)),
            hjust = 1, size = 2.5, nudge_y = 0.04) +
  labs(title = "Remuneración Promedio por Actividad*",
       subtitle = "* organizado de mayor a menor cantidad de trabajadores",
       x = "Remuneración Promedio", y = "Actividad") +
   theme(axis.text.y = element_text(size = 6)) +  # Reducir el tamaño de letra del eje Y
  scale_y_discrete(labels = function(y) str_wrap(y, width = 40))  # Dividir en dos líneas si es necesario

De la tabla y gráficos podemos observar que el tipo de actividad representa el mayor ejemplo de brecha salarial, y que en general,podemos ubicar las actividades con mayor remuneración promedio como las que tienen menos cantidad de trabajadores totales.

Las excepciones parecen ser los sin categorizar (entendemos que por falta de datos en base) y los de personal doméstico de hogares privados. Sin embargo, en la sección consideraciones de la metodología, se aclara: > “no forman parte de la base las relaciones laborales no registradas y las diversas formas de trabajo por cuenta propia, sea registrado o no. A su vez, dado que los trabajadores de casas particulares cuentan con un régimen especial, este tampoco es incluido en la información provista.”

Con estas aclaraciones, lo que entendemos es que el grueso de trabajadores “en negro” no estaría incluido en estos datos.

Proporción de trabajadores

# Gráfico de proporción de trabajadores por población
# https://www.indec.gob.ar/indec/web/Nivel4-Tema-4-31-58
# https://www.indec.gob.ar/uploads/informesdeprensa/mercado_trabajo_eph_2trim228FD416F03D.pdf

df_proporcion <- df_sin_des_x_dep |> 
  ungroup() |> 
  left_join(select(deptos_ign, c(5,6,9)), by = c("departamento_id" = "in1")) |>
  mutate(Proporcion_trabajadores = Cantidad_trabajadores/Poblacion_depto )

df_proporcion|> 
  ggplot(aes(fill = Proporcion_trabajadores, geometry = geometry)) +
  geom_sf() +
    scale_fill_viridis_c(option = "D",
                       direction = 1) +
labs(title = "Proporción de trabajadores*",
     subtitle = "* cantidad de trabajadores / población de la jurisdicción")

Este gráfico nos da una un argumento para soportar esta hipótesis. Consultando estadísticas sobre Población Económicamente Activa (PEA), para la fecha de este relevamiento (octubre 2021) provistas por el INDEC (https://www.indec.gob.ar/uploads/informesdeprensa/mercado_trabajo_eph_2trim228FD416F03D.pdf), alrededor del 46,7%, vemos que nuestros datos dan una proporción mucho menor (en promedio, (16.25%), y que también existe una gran diferencia entre las proporciones de CABA (32%), y PBA (12.36%).

Tal como se indica en la tabla debajo, existen jurisdicciones con proporciones de menos del 6% (Ensenada), y la más alta de 37,2% (Comuna 1). Todo esto, en principio podríamos atribuirlo al empleo informal y la desocupación, pero por supuesto se necesitaría de acceso a muchos otros datos censales para confrontar este supuesto.

df_proporcion |>
  select(c(11,3,9,10,13)) |> 
  gt() |>
  tab_header(
    title = "Empleo AMBA - Población y Trabajadores",
  ) |>
  tab_options(table.width = "75%") |>
  gt_theme_538() |> 
    data_color(
    palette = "plasma",
    columns = 5
  )
Empleo AMBA - Población y Trabajadores
nam Cantidad_trabajadores Poblacion_depto Viviendas_depto Proporcion_trabajadores
Comuna 1 54400 146162 88431 0.37218976
Comuna 2 55003 157932 108136 0.34827014
Comuna 3 65342 187186 101212 0.34907525
Comuna 4 54237 200608 77545 0.27036310
Comuna 5 60000 178452 92582 0.33622487
Comuna 6 60167 175447 93108 0.34293547
Comuna 7 58230 200044 85338 0.29108596
Comuna 8 31920 158184 47595 0.20179032
Comuna 9 45639 160821 63074 0.28378757
Comuna 10 49555 163773 70646 0.30258345
Comuna 11 58246 189832 84734 0.30682920
Comuna 12 67034 200116 93502 0.33497571
Comuna 13 82217 230305 129207 0.35699182
Comuna 14 78990 224320 140376 0.35213088
Comuna 15 60731 181895 86141 0.33387944
Almirante Brown 81592 521037 147495 0.15659540
Avellaneda 50047 325434 107141 0.15378541
Berazategui 31008 315441 91126 0.09830047
Berisso 6142 85881 26563 0.07151757
Brandsen 3317 23242 7274 0.14271577
Cañuelas 9234 45105 13253 0.20472231
Ensenada 3182 53778 16561 0.05916918
Escobar 27386 205161 57432 0.13348541
Esteban Echeverría 39322 292899 83695 0.13425106
Ezeiza 17209 162305 44051 0.10602877
Florencio Varela 27891 394908 106232 0.07062658
General Las Heras 2158 11550 3616 0.18683983
General Rodríguez 8544 71926 20830 0.11878876
General San Martín 51520 391815 127323 0.13149063
Hurlingham 20497 180947 55037 0.11327626
Ituzaingó 13370 167627 51383 0.07976042
José C. Paz 31520 257881 69741 0.12222692
La Matanza 186525 1660511 455650 0.11232988
Lanús 58735 446779 146283 0.13146321
La Plata 66933 648659 219519 0.10318673
Lomas de Zamora 74576 577997 178074 0.12902489
Malvinas Argentinas 52776 322373 89337 0.16371098
Marcos Paz 4006 47933 13507 0.08357499
Merlo 54537 528450 147702 0.10320182
Moreno 37102 445305 121914 0.08331818
Morón 44586 316061 105742 0.14106771
Pilar 36745 291136 80348 0.12621249
Presidente Perón 10217 80576 21232 0.12679954
Quilmes 71559 567929 172662 0.12599990
San Fernando 16910 155795 47223 0.10854007
San Isidro 47764 283677 93891 0.16837460
San Miguel 29663 274599 80150 0.10802297
San Vicente 7843 57413 16497 0.13660669
Tigre 53486 349795 100973 0.15290670
Tres de Febrero 54178 327915 108964 0.16521965
Vicente López 46647 267483 98405 0.17439239

3.2 Correlaciones

Matriz de Correlación Versión de www.khstats.com/blog/corr-plots

# tomado de https://www.khstats.com/blog/corr-plots/
cors <- function(df) {
  M <- Hmisc::rcorr(as.matrix(df))
  Mdf <- map(M, ~data.frame(.x))
  return(Mdf)
}

formatted_cors <- function(df){
  cors(df) %>%
    map(~rownames_to_column(.x, var = "variable1")) %>%
    map(~pivot_longer(.x, cols = -variable1, names_to = "variable2", values_to = "value")) %>%
    bind_rows(.id = "id") %>%
    pivot_wider(names_from = id, values_from = value) %>%
    rename(p = P) %>%
    mutate(sig_p = ifelse(p < .05, T, F),
           p_if_sig = ifelse(sig_p, p, NA),
           r_if_sig = ifelse(sig_p, r, NA)) 
}

formatted_cors(df[, 6:16]) |>
  ggplot( aes(variable1, variable2, fill=r, label=round(r_if_sig,2))) +
  geom_tile() +
  labs(x = NULL, y = NULL, fill = "Correlaciones\nde Pearson", title="Correlaciones",
       subtitle="Solo muestra coeficientes de correlacion significativos") +
  scale_fill_gradient2(mid="#FBFEF9",low="#A63446",high="#0C6291", limits=c(-1,1)) +
  geom_text() +
  theme_classic() +
  scale_x_discrete(expand=c(0,0)) +
  scale_y_discrete(expand=c(0,0)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Warning: Removed 11 rows containing missing values (`geom_text()`).

matriz <- Hmisc::rcorr(as.matrix(df[, 6:16]))

data.frame(matriz$r) |> 
  gt() |> 
  tab_options(table.width = "75%") |>
  gt_theme_538()
Cantidad_trabajadores Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres Remuneracion_media_Mujeres Remuneracion_mediana Remuneracion_mediana_Hombres Remuneracion_mediana_Mujeres Poblacion_radio Viviendas_radio
1.000000000 0.90030209 0.943461819 -0.009317716 -0.007106054 -0.006322121 -0.02485194 -0.01981702 -0.03567264 0.03289139 0.10883423
0.900302094 1.00000000 0.712889231 -0.014169283 -0.010488791 -0.011715257 -0.02878699 -0.02464643 -0.03998330 0.07508706 0.13178945
0.943461819 0.71288923 1.000000000 -0.008716474 -0.011393070 -0.006155427 -0.02782305 -0.02052311 -0.03455699 0.01884518 0.08198418
-0.009317716 -0.01416928 -0.008716474 1.000000000 0.927765605 0.541965963 0.96621270 0.91005245 0.53085830 -0.04431850 0.02293731
-0.007106054 -0.01048879 -0.011393070 0.927765605 1.000000000 0.072181232 0.85621566 0.98120277 0.06920227 -0.03936344 0.02106968
-0.006322121 -0.01171526 -0.006155427 0.541965963 0.072181232 1.000000000 0.54736480 0.06491454 0.97549425 -0.07423886 0.04420998
-0.024851938 -0.02878699 -0.027823053 0.966212701 0.856215656 0.547364797 1.00000000 0.87147038 0.55898194 -0.04101451 0.01457066
-0.019817016 -0.02464643 -0.020523111 0.910052450 0.981202773 0.064914540 0.87147038 1.00000000 0.06362749 -0.03712264 0.01506084
-0.035672637 -0.03998330 -0.034556987 0.530858304 0.069202271 0.975494246 0.55898194 0.06362749 1.00000000 -0.06980282 0.03608907
0.032891394 0.07508706 0.018845175 -0.044318499 -0.039363439 -0.074238857 -0.04101451 -0.03712264 -0.06980282 1.00000000 0.61869789
0.108834228 0.13178945 0.081984178 0.022937314 0.021069682 0.044209985 0.01457066 0.01506084 0.03608907 0.61869789 1.00000000
# Matriz de correlación# 
# https://blog.hasanbul.li/2018/01/14/exporting-correlation-plots/
matriz_cor <- cor(df[, 6:16], use = "complete.obs")

matriz_cor
##                               Cantidad_trabajadores
## Cantidad_trabajadores                    1.00000000
## Cantidad_trabajadores_Hombres            0.90344701
## Cantidad_trabajadores_Mujeres            0.94464444
## Remuneracion_media                      -0.01822649
## Remuneracion_media_Hombres              -0.01264479
## Remuneracion_media_Mujeres              -0.01147932
## Remuneracion_mediana                    -0.03538164
## Remuneracion_mediana_Hombres            -0.02552626
## Remuneracion_mediana_Mujeres            -0.04452308
## Poblacion_radio                          0.03789523
## Viviendas_radio                          0.11142396
##                               Cantidad_trabajadores_Hombres
## Cantidad_trabajadores                            0.90344701
## Cantidad_trabajadores_Hombres                    1.00000000
## Cantidad_trabajadores_Mujeres                    0.71288923
## Remuneracion_media                              -0.01245247
## Remuneracion_media_Hombres                      -0.01217047
## Remuneracion_media_Mujeres                      -0.01171526
## Remuneracion_mediana                            -0.03199080
## Remuneracion_mediana_Hombres                    -0.02776594
## Remuneracion_mediana_Mujeres                    -0.03998330
## Poblacion_radio                                  0.07715698
## Viviendas_radio                                  0.13817640
##                               Cantidad_trabajadores_Mujeres Remuneracion_media
## Cantidad_trabajadores                           0.944644444        -0.01822649
## Cantidad_trabajadores_Hombres                   0.712889231        -0.01245247
## Cantidad_trabajadores_Mujeres                   1.000000000        -0.02032561
## Remuneracion_media                             -0.020325608         1.00000000
## Remuneracion_media_Hombres                     -0.011393070         0.91879542
## Remuneracion_media_Mujeres                     -0.009908102         0.36403279
## Remuneracion_mediana                           -0.033394307         0.83981265
## Remuneracion_mediana_Hombres                   -0.020523111         0.86628908
## Remuneracion_mediana_Mujeres                   -0.042310702         0.34589765
## Poblacion_radio                                 0.003281940        -0.06258563
## Viviendas_radio                                 0.076097630         0.04294364
##                               Remuneracion_media_Hombres
## Cantidad_trabajadores                        -0.01264479
## Cantidad_trabajadores_Hombres                -0.01217047
## Cantidad_trabajadores_Mujeres                -0.01139307
## Remuneracion_media                            0.91879542
## Remuneracion_media_Hombres                    1.00000000
## Remuneracion_media_Mujeres                    0.07218123
## Remuneracion_mediana                          0.73781277
## Remuneracion_mediana_Hombres                  0.97004769
## Remuneracion_mediana_Mujeres                  0.06920227
## Poblacion_radio                              -0.03680286
## Viviendas_radio                               0.02651878
##                               Remuneracion_media_Mujeres Remuneracion_mediana
## Cantidad_trabajadores                       -0.011479322          -0.03538164
## Cantidad_trabajadores_Hombres               -0.011715257          -0.03199080
## Cantidad_trabajadores_Mujeres               -0.009908102          -0.03339431
## Remuneracion_media                           0.364032792           0.83981265
## Remuneracion_media_Hombres                   0.072181232           0.73781277
## Remuneracion_media_Mujeres                   1.000000000           0.32444931
## Remuneracion_mediana                         0.324449314           1.00000000
## Remuneracion_mediana_Hombres                 0.064914540           0.75543500
## Remuneracion_mediana_Mujeres                 0.962097235           0.33337295
## Poblacion_radio                             -0.082160870          -0.05601086
## Viviendas_radio                              0.050343451           0.02373897
##                               Remuneracion_mediana_Hombres
## Cantidad_trabajadores                          -0.02552626
## Cantidad_trabajadores_Hombres                  -0.02776594
## Cantidad_trabajadores_Mujeres                  -0.02052311
## Remuneracion_media                              0.86628908
## Remuneracion_media_Hombres                      0.97004769
## Remuneracion_media_Mujeres                      0.06491454
## Remuneracion_mediana                            0.75543500
## Remuneracion_mediana_Hombres                    1.00000000
## Remuneracion_mediana_Mujeres                    0.06362749
## Poblacion_radio                                -0.03294995
## Viviendas_radio                                 0.01716597
##                               Remuneracion_mediana_Mujeres Poblacion_radio
## Cantidad_trabajadores                          -0.04452308      0.03789523
## Cantidad_trabajadores_Hombres                  -0.03998330      0.07715698
## Cantidad_trabajadores_Mujeres                  -0.04231070      0.00328194
## Remuneracion_media                              0.34589765     -0.06258563
## Remuneracion_media_Hombres                      0.06920227     -0.03680286
## Remuneracion_media_Mujeres                      0.96209723     -0.08216087
## Remuneracion_mediana                            0.33337295     -0.05601086
## Remuneracion_mediana_Hombres                    0.06362749     -0.03294995
## Remuneracion_mediana_Mujeres                    1.00000000     -0.07470748
## Poblacion_radio                                -0.07470748      1.00000000
## Viviendas_radio                                 0.04039685      0.56613566
##                               Viviendas_radio
## Cantidad_trabajadores              0.11142396
## Cantidad_trabajadores_Hombres      0.13817640
## Cantidad_trabajadores_Mujeres      0.07609763
## Remuneracion_media                 0.04294364
## Remuneracion_media_Hombres         0.02651878
## Remuneracion_media_Mujeres         0.05034345
## Remuneracion_mediana               0.02373897
## Remuneracion_mediana_Hombres       0.01716597
## Remuneracion_mediana_Mujeres       0.04039685
## Poblacion_radio                    0.56613566
## Viviendas_radio                    1.00000000
# Gráfico de correlación
# https://www.khstats.com/blog/corr-plots/
# https://bookdown.org/ndphillips/YaRrr/saving-plots-to-a-file-with-pdf-jpeg-and-png.html
# https://copyprogramming.com/howto/how-to-save-a-plot-created-by-corrplot-function-in-r

# png(height=800, width=800, file="grafico_correlacion.png")
corrplot(
  matriz_cor,
  method = "color",          # Colores para representar la correlación
  type = "lower",            # Tipo de gráfico (triangular inferior)
  tl.col = "black",          # Color variables
  tl.srt = 45,               # Ángulo de rotación de las etiquetas
  addCoef.col = "black",     # Color coeficientes
  mar=c(1,1,1,1),            # Márgenes
  tl.cex = 0.6,              # Tamaño de letra variables
  number.cex = 0.55,         # Tamaño de letra coeficientes
  cl.cex = 0.6               # Tamaño de letra leyenda
  # diag = FALSE             # Diagonal
  )

# dev.off()



matriz_cor
##                               Cantidad_trabajadores
## Cantidad_trabajadores                    1.00000000
## Cantidad_trabajadores_Hombres            0.90344701
## Cantidad_trabajadores_Mujeres            0.94464444
## Remuneracion_media                      -0.01822649
## Remuneracion_media_Hombres              -0.01264479
## Remuneracion_media_Mujeres              -0.01147932
## Remuneracion_mediana                    -0.03538164
## Remuneracion_mediana_Hombres            -0.02552626
## Remuneracion_mediana_Mujeres            -0.04452308
## Poblacion_radio                          0.03789523
## Viviendas_radio                          0.11142396
##                               Cantidad_trabajadores_Hombres
## Cantidad_trabajadores                            0.90344701
## Cantidad_trabajadores_Hombres                    1.00000000
## Cantidad_trabajadores_Mujeres                    0.71288923
## Remuneracion_media                              -0.01245247
## Remuneracion_media_Hombres                      -0.01217047
## Remuneracion_media_Mujeres                      -0.01171526
## Remuneracion_mediana                            -0.03199080
## Remuneracion_mediana_Hombres                    -0.02776594
## Remuneracion_mediana_Mujeres                    -0.03998330
## Poblacion_radio                                  0.07715698
## Viviendas_radio                                  0.13817640
##                               Cantidad_trabajadores_Mujeres Remuneracion_media
## Cantidad_trabajadores                           0.944644444        -0.01822649
## Cantidad_trabajadores_Hombres                   0.712889231        -0.01245247
## Cantidad_trabajadores_Mujeres                   1.000000000        -0.02032561
## Remuneracion_media                             -0.020325608         1.00000000
## Remuneracion_media_Hombres                     -0.011393070         0.91879542
## Remuneracion_media_Mujeres                     -0.009908102         0.36403279
## Remuneracion_mediana                           -0.033394307         0.83981265
## Remuneracion_mediana_Hombres                   -0.020523111         0.86628908
## Remuneracion_mediana_Mujeres                   -0.042310702         0.34589765
## Poblacion_radio                                 0.003281940        -0.06258563
## Viviendas_radio                                 0.076097630         0.04294364
##                               Remuneracion_media_Hombres
## Cantidad_trabajadores                        -0.01264479
## Cantidad_trabajadores_Hombres                -0.01217047
## Cantidad_trabajadores_Mujeres                -0.01139307
## Remuneracion_media                            0.91879542
## Remuneracion_media_Hombres                    1.00000000
## Remuneracion_media_Mujeres                    0.07218123
## Remuneracion_mediana                          0.73781277
## Remuneracion_mediana_Hombres                  0.97004769
## Remuneracion_mediana_Mujeres                  0.06920227
## Poblacion_radio                              -0.03680286
## Viviendas_radio                               0.02651878
##                               Remuneracion_media_Mujeres Remuneracion_mediana
## Cantidad_trabajadores                       -0.011479322          -0.03538164
## Cantidad_trabajadores_Hombres               -0.011715257          -0.03199080
## Cantidad_trabajadores_Mujeres               -0.009908102          -0.03339431
## Remuneracion_media                           0.364032792           0.83981265
## Remuneracion_media_Hombres                   0.072181232           0.73781277
## Remuneracion_media_Mujeres                   1.000000000           0.32444931
## Remuneracion_mediana                         0.324449314           1.00000000
## Remuneracion_mediana_Hombres                 0.064914540           0.75543500
## Remuneracion_mediana_Mujeres                 0.962097235           0.33337295
## Poblacion_radio                             -0.082160870          -0.05601086
## Viviendas_radio                              0.050343451           0.02373897
##                               Remuneracion_mediana_Hombres
## Cantidad_trabajadores                          -0.02552626
## Cantidad_trabajadores_Hombres                  -0.02776594
## Cantidad_trabajadores_Mujeres                  -0.02052311
## Remuneracion_media                              0.86628908
## Remuneracion_media_Hombres                      0.97004769
## Remuneracion_media_Mujeres                      0.06491454
## Remuneracion_mediana                            0.75543500
## Remuneracion_mediana_Hombres                    1.00000000
## Remuneracion_mediana_Mujeres                    0.06362749
## Poblacion_radio                                -0.03294995
## Viviendas_radio                                 0.01716597
##                               Remuneracion_mediana_Mujeres Poblacion_radio
## Cantidad_trabajadores                          -0.04452308      0.03789523
## Cantidad_trabajadores_Hombres                  -0.03998330      0.07715698
## Cantidad_trabajadores_Mujeres                  -0.04231070      0.00328194
## Remuneracion_media                              0.34589765     -0.06258563
## Remuneracion_media_Hombres                      0.06920227     -0.03680286
## Remuneracion_media_Mujeres                      0.96209723     -0.08216087
## Remuneracion_mediana                            0.33337295     -0.05601086
## Remuneracion_mediana_Hombres                    0.06362749     -0.03294995
## Remuneracion_mediana_Mujeres                    1.00000000     -0.07470748
## Poblacion_radio                                -0.07470748      1.00000000
## Viviendas_radio                                 0.04039685      0.56613566
##                               Viviendas_radio
## Cantidad_trabajadores              0.11142396
## Cantidad_trabajadores_Hombres      0.13817640
## Cantidad_trabajadores_Mujeres      0.07609763
## Remuneracion_media                 0.04294364
## Remuneracion_media_Hombres         0.02651878
## Remuneracion_media_Mujeres         0.05034345
## Remuneracion_mediana               0.02373897
## Remuneracion_mediana_Hombres       0.01716597
## Remuneracion_mediana_Mujeres       0.04039685
## Poblacion_radio                    0.56613566
## Viviendas_radio                    1.00000000
# Descripción de Empleo AMBA sin desagregar
summary(empleo)
##      LINK            provincia_id  departamento_id Cantidad_trabajadores
##  Length:13882       Min.   :2.00   Min.   :2007    Min.   : 11.0        
##  Class :character   1st Qu.:6.00   1st Qu.:6028    1st Qu.: 89.0        
##  Mode  :character   Median :6.00   Median :6427    Median :151.0        
##                     Mean   :5.03   Mean   :5398    Mean   :162.8        
##                     3rd Qu.:6.00   3rd Qu.:6539    3rd Qu.:222.0        
##                     Max.   :6.00   Max.   :6861    Max.   :892.0        
##                                                                         
##  Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media
##  Min.   :  2.00                Min.   :  1.00                Min.   :  44249   
##  1st Qu.: 50.00                1st Qu.: 36.00                1st Qu.:  97413   
##  Median : 86.00                Median : 62.00                Median : 112606   
##  Mean   : 92.03                Mean   : 70.67                Mean   : 122533   
##  3rd Qu.:126.00                3rd Qu.: 97.00                3rd Qu.: 135412   
##  Max.   :635.00                Max.   :366.00                Max.   :1737000   
##                                NA's   :3                                       
##  Remuneracion_media_Hombres Remuneracion_media_Mujeres Remuneracion_mediana
##  Min.   :  42295            Min.   :   5012            Min.   : 35486      
##  1st Qu.: 101507            1st Qu.:  88838            1st Qu.: 83980      
##  Median : 120134            Median : 102642            Median : 92402      
##  Mean   : 134169            Mean   : 108783            Mean   : 94760      
##  3rd Qu.: 148888            3rd Qu.: 121796            3rd Qu.:103205      
##  Max.   :2881091            Max.   :1104929            Max.   :336937      
##                             NA's   :3                                      
##  Remuneracion_mediana_Hombres Remuneracion_mediana_Mujeres Poblacion_radio
##  Min.   : 34330               Min.   :  5012               Min.   :  53   
##  1st Qu.: 86654               1st Qu.: 78164               1st Qu.: 723   
##  Median : 97136               Median : 87405               Median : 927   
##  Mean   :101037               Mean   : 88956               Mean   :1002   
##  3rd Qu.:111193               3rd Qu.: 98284               3rd Qu.:1207   
##  Max.   :399332               Max.   :317091               Max.   :5895   
##                               NA's   :3                                   
##  Viviendas_radio 
##  Min.   :  12.0  
##  1st Qu.: 259.0  
##  Median : 324.0  
##  Mean   : 337.7  
##  3rd Qu.: 399.0  
##  Max.   :1405.0  
## 
# Descripción de Empleo AMBA a Letra
summary(empleo_tipo)
##      LINK            provincia_id   departamento_id    letra          
##  Length:209544      Min.   :2.000   Min.   :2007    Length:209544     
##  Class :character   1st Qu.:2.000   1st Qu.:2098    Class :character  
##  Mode  :character   Median :6.000   Median :6427    Mode  :character  
##                     Mean   :4.893   Mean   :5249                      
##                     3rd Qu.:6.000   3rd Qu.:6539                      
##                     Max.   :6.000   Max.   :6861                      
##                                                                       
##  Cantidad_trabajadores Cantidad_trabajadores_Hombres
##  Min.   :  1.00        Min.   :  1.000              
##  1st Qu.:  2.00        1st Qu.:  2.000              
##  Median :  6.00        Median :  4.000              
##  Mean   : 10.78        Mean   :  6.736              
##  3rd Qu.: 14.00        3rd Qu.:  9.000              
##  Max.   :275.00        Max.   :273.000              
##                        NA's   :19984                
##  Cantidad_trabajadores_Mujeres Remuneracion_media Remuneracion_media_Hombres
##  Min.   :  1.00                Min.   :       0   Min.   :        0         
##  1st Qu.:  1.00                1st Qu.:   77459   1st Qu.:    78267         
##  Median :  3.00                Median :  107655   Median :   112167         
##  Mean   :  6.13                Mean   :  132967   Mean   :   143797         
##  3rd Qu.:  8.00                3rd Qu.:  150981   3rd Qu.:   162879         
##  Max.   :134.00                Max.   :82039675   Max.   :102996268         
##  NA's   :49599                                    NA's   :19984             
##  Remuneracion_media_Mujeres Remuneracion_mediana Remuneracion_mediana_Hombres
##  Min.   :       0           Min.   :       0     Min.   :        0           
##  1st Qu.:   68040           1st Qu.:   71474     1st Qu.:    73066           
##  Median :   95855           Median :   95692     Median :   101181           
##  Mean   :  114505           Mean   :  116607     Mean   :   127568           
##  3rd Qu.:  133844           3rd Qu.:  132665     3rd Qu.:   145615           
##  Max.   :13910144           Max.   :82039675     Max.   :102996268           
##  NA's   :49599                                   NA's   :19984               
##  Remuneracion_mediana_Mujeres Poblacion_radio Viviendas_radio 
##  Min.   :       0             Min.   :  53    Min.   :  12.0  
##  1st Qu.:   63243             1st Qu.: 734    1st Qu.: 267.0  
##  Median :   88164             Median : 930    Median : 332.0  
##  Mean   :  104658             Mean   :1010    Mean   : 346.5  
##  3rd Qu.:  122606             3rd Qu.:1210    3rd Qu.: 406.0  
##  Max.   :13910144             Max.   :5895    Max.   :1405.0  
##  NA's   :49599
# Descripción de Empleo AMBA sin desagregar x departamento
summary(df_sin_des_x_dep)
##   provincia_id   departamento_id Cantidad_trabajadores
##  Min.   :2.000   Min.   :2007    Min.   :  2158       
##  1st Qu.:2.000   1st Qu.:2094    1st Qu.: 23942       
##  Median :6.000   Median :6274    Median : 47764       
##  Mean   :4.824   Mean   :5156    Mean   : 44322       
##  3rd Qu.:6.000   3rd Qu.:6532    3rd Qu.: 58491       
##  Max.   :6.000   Max.   :6861    Max.   :186525       
##  Cantidad_trabajadores_Hombres Cantidad_trabajadores_Mujeres Remuneracion_media
##  Min.   :  1196                Min.   :  962                 Min.   : 91772    
##  1st Qu.: 14539                1st Qu.: 8796                 1st Qu.:105679    
##  Median : 24875                Median :21194                 Median :112432    
##  Mean   : 25050                Mean   :19232                 Mean   :121521    
##  3rd Qu.: 31847                3rd Qu.:27712                 3rd Qu.:131369    
##  Max.   :114897                Max.   :71563                 Max.   :195682    
##  Remuneracion_media_Hombres Remuneracion_media_Mujeres Poblacion_depto  
##  Min.   : 94530             Min.   : 86203             Min.   :  11550  
##  1st Qu.:110440             1st Qu.: 94513             1st Qu.: 159503  
##  Median :121610             Median :102425             Median : 200608  
##  Mean   :131789             Mean   :108647             Mean   : 272792  
##  3rd Qu.:145021             3rd Qu.:116506             3rd Qu.: 323904  
##  Max.   :227483             Max.   :162044             Max.   :1660511  
##  Viviendas_depto 
##  Min.   :  3616  
##  1st Qu.: 53210  
##  Median : 88431  
##  Mean   : 91931  
##  3rd Qu.:107639  
##  Max.   :455650
hist(empleo$Remuneracion_media_Hombres, breaks = 1000,
     col='blue',
     main='histograma salario_medio',
     xlab='salario',
     ylab='Frequency')

empleo_means <- aggregate(df_x_depto$Remuneracion_media,
                        list(df_x_depto$departamento_id),
                        mean)
empleo_means
##    Group.1        x
## 1     2007 220244.6
## 2     2014 231086.4
## 3     2021 143351.4
## 4     2028 127451.3
## 5     2035 164250.8
## 6     2042 181369.7
## 7     2049 161704.8
## 8     2056 127184.1
## 9     2063 133346.5
## 10    2070 144563.3
## 11    2077 170837.4
## 12    2084 189708.9
## 13    2091 212426.5
## 14    2098 227672.0
## 15    2105 159120.1
## 16    6028 129579.8
## 17    6035 127169.6
## 18    6091 118191.6
## 19    6098 119317.7
## 20    6119 104012.2
## 21    6134 115525.3
## 22    6245 133112.7
## 23    6252 138139.4
## 24    6260 126502.2
## 25    6270 116159.6
## 26    6274 111168.2
## 27    6329 118318.1
## 28    6364 117430.1
## 29    6371 124587.4
## 30    6408 131168.3
## 31    6410 139701.5
## 32    6412 110892.5
## 33    6427 119087.5
## 34    6434 138282.0
## 35    6441 118501.7
## 36    6490 133550.1
## 37    6515 114154.7
## 38    6525 108864.0
## 39    6539 119108.2
## 40    6560 112798.8
## 41    6568 143700.7
## 42    6638 155901.6
## 43    6648 103021.4
## 44    6658 134375.8
## 45    6749 141591.2
## 46    6756 176561.0
## 47    6760 139981.1
## 48    6778 121461.2
## 49    6805 150948.5
## 50    6840 139078.5
## 51    6861 172470.3
filtrado <- df_x_depto|>
  filter(Remuneracion_media_Hombres < 3000000, Remuneracion_media_Mujeres < 2000000)
ggplot(filtrado, aes(Remuneracion_media_Hombres,
                        Remuneracion_media_Mujeres)
       ) + geom_point(aes(col=departamento_id), size=2)

filtrado2 <- df_x_depto|>
  filter(Remuneracion_media_Hombres < 500000, Remuneracion_media_Mujeres < 500000)
ggplot(filtrado2, aes(Remuneracion_media_Hombres,
                        Remuneracion_media_Mujeres)
       ) + geom_point(aes(col=departamento_id), size=1)

#boxplots comparados
boxplot(filtrado2$Remuneracion_media_Mujeres ~ filtrado2$departamento_id,
        col = 1:3)
points(x = 1:nrow(empleo_means),
       y = empleo_means$x,
       pch = 16,
       col = "white")
text(x = 1:nrow(empleo_means),
     y = empleo_means$x + 1.2,
     labels = round(empleo_means$x, 2),
     col = "white")

plot(df_x_depto$Remuneracion_media_Hombres, df_x_depto$Remuneracion_media_Mujeres,
     col='steelblue',
     main='Scatterplot',
     xlab='Media hombres',
     ylab='Media mujeres',
     pch=19)

empleo_tipo2 <- na.omit(filtrado)
empleoCluster2 <- kmeans(filtrado[,9:10], center=2, iter.max=10, nstart=20)
empleoCluster2
empleoCluster3 <- kmeans(filtrado[,9:10], center=3, iter.max=10, nstart=20)
empleoCluster3
empleoCluster15 <- kmeans(filtrado[,9:10], center=15, iter.max=10, nstart=20)
empleoCluster15
table(empleoCluster2$cluster, filtrado$departamento_id)
clusplot(filtrado, empleoCluster2$cluster, color=T, shade=T, labels=0, lines=0)
# INTERRUPCIÓN. ELIMINAR O COMENTAR SEGÚN SEA NECESARIO
# stop("Detención manual del código")
# Para abordar estos warnings, podrías considerar ajustar el número de centroides
# que estás probando (center) o modificar otros parámetros del algoritmo k-means,
# como nstart, que controla el número de inicializaciones aleatorias que se ejecutan
# para encontrar el mejor resultado. También podrías evaluar la estructura de tus
# datos para determinar si el número de centroides elegido tiene sentido desde
# un punto de vista de negocio o análisis de datos.

tot.withinss <- vector(mode="character", length=10)
for (i in 1:15){
  empleoCluster <- kmeans(filtrado[,9:10], center=i, nstart=20)
  tot.withinss[i] <- empleoCluster$tot.withinss
}
plot(1:15, tot.withinss, type="b", pch=19)
xyplot(Remuneracion_media_Hombres ~ Remuneracion_media_Mujeres,
       data = filtrado,
       type = c("p", "g", "smooth"),
       xlab = "Remuneracion_media_Hombres",
       ylab = "Remuneracion_media_Mujeres)")
xyplot(Remuneracion_media_Hombres ~ Remuneracion_media_Mujeres | departamento_id,
       group = departamento_id,
       data = filtrado,
       auto.key = TRUE,
       type = c("p", "smooth"),
       scales= "free")
set.seed(001)
filtrado <- filtrado[complete.cases(filtrado), ]
intrain <- createDataPartition(y = filtrado$departamento_id,
                               p = 0.7, list = FALSE)
training <- filtrado[intrain, ]
testing <- filtrado[-intrain, ]
dim(training)
dim(testing)
skimmed <- skim(training)
# skimmed[, c(1:15)]
summary(skimmed)[1:15]
x = training[, 9:10]
y = training$departamento_id
x_test = testing[9:10]
y_test = testing$departamento_id
trctrl1 <- trainControl(method =
                          "LOOCV", number = 10)
trctrl2 <- trainControl(method =
                          "repeatedcv", number = 10, repeats = 3)
knn_fit2 <- train(departamento_id ~., data = training, method = "knn",
                   trControl =trctrl2,
                   preProcess = c("center", "scale"),
                   tuneLength = 10)
knn_fit2